vue version >=3.2.0
npm install --save vue3-toastify
# yarn add vue3-toastify
A demo is worth a thousand words
Check the documentation to get you started!
<template>
<div>
<button @click="notify">Notify !</button>
</div>
</template>
<script>
import { toast } from 'vue3-toastify';
import 'vue3-toastify/dist/index.css';
export default {
name: "App",
setup() {
const notify = () => {
toast("Wow so easy !", {
autoClose: 1000,
}); // ToastOptions
}
return { notify };
}
};
</script>
// main.ts
import Vue3Toastify, { type ToastContainerOptions } from 'vue3-toastify';
app.use(Vue3Toastify, {
autoClose: 3000,
} as ToastContainerOptions);
// tsconfig.json
{
"compilerOptions": {
"types": [
"vue3-toastify/global"
]
}
}
or
updateGlobalOptions({ rtl: true });
toast.success('Wow so easy!');
import { App, createApp } from 'vue';
import router from './routes';
import Vue3Toasity, { type ToastContainerOptions } from 'vue3-toastify';
import Root from './App.vue';
import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/reset.css';
function resolveGLobalComponents(instance: App<Element>) {
instance.use(Antd);
}
const app = createApp(Root);
app.use(router);
resolveGLobalComponents(app);
app.use(
Vue3Toasity,
{
// the Toast application is separate from the main application, so we need to call .use
useHandler: resolveGLobalComponents,
// other props...
} as ToastContainerOptions,
);
app.mount('#app');
- plugins/vue3-toastify.ts
import Vue3Toastify, { toast } from 'vue3-toastify';
import 'vue3-toastify/dist/index.css';
export default defineNuxtPlugin((nuxtApp) => {
nuxtApp.vueApp.use(Vue3Toastify, { autoClose: 1000 });
return {
provide: { toast },
};
});
- demo.vue
<script setup>
// import { toast } from 'vue3-toastify';
nextTick(() => {
if (process.client) {
useNuxtApp().$toast('notify after nextTick');
}
});
const notify = () => {
useNuxtApp().$toast.info('toastify success');
// or
// toast.info('toastify success');
};
</script>
<template>
<button @click="notify">notify by click</button>
</template>
<html lang="en">
<head>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/index.css" rel="stylesheet" />
<title>Using the ES Module Build</title>
</head>
<body>
<div id="app">
<button @click="notify">show toast</button>
<span> </span>
<button @click="dismiss">dismiss</button>
</div>
<script type="importmap">
{
"imports": {
"vue": "https://unpkg.com/vue@3/dist/vue.esm-browser.js"
}
}
</script>
<script type="module">
import { createApp } from 'vue'
import { toast } from 'https://unpkg.com/[email protected]/dist/index.mjs'
createApp({
data() {
return {
toastId: '',
toastIds: [],
};
},
methods: {
notify() {
const toastId = toast.info(
'hello',
{
rtl: true,
limit: 3,
position: toast.POSITION.BOTTOM_CENTER,
},
);
this.toastIds.push(toastId);
},
dismiss() {
console.log(this.toastIds)
this.toastIds.forEach(id => {
toast.remove(this.toastId);
});
/* toast.clearAll() */;
},
}
}).mount('#app')
</script>
</body>
</html>