我想知道是否有一种方法可以通过 primevue toast 函数调用创建可重用的脚本/类/服务,这样我就不需要在每个组件中直接调用 primevue toast 函数。 p>
到目前为止,我尝试做的是创建一个 ToastService.ts,如下所示:
import { useToast } from 'primevue/usetoast'; const toast = useToast(); export function addMsgSuccess(): void { toast.add({ severity: 'success', summary: 'Test', detail: 'Test', life: 3000 }); }
但是这段代码使我的应用程序崩溃,并且出现以下错误:
未捕获错误:useToast 未提供 PrimeVue Toast! (usetoast.esm.js?18cb:8:1) eval (ToastService.ts?73ba:3:1) 模块../src/shared/service/ToastService.ts (app.js:1864:1) webpack_require (app.js:849:30) fn (app.js:151:20) eval (cjs.js?!./node_modules/babel-loader/lib/index.js!./ node_modules/ts-loader/index.js?!./node_modules/eslint-loader/index.js?!./src/views/cadastro-plano/CadastroPlano.ts?vue&type=script&lang=ts:31:87) 模块../node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/eslint- loader/index.js?!./src/views/cadastro-plano/CadastroPlano.ts?
有谁知道如何解决这个问题,或者创建进行此 add() 调用的函数,这样我就不需要每次都调用它?
P粉3434089292024-03-20 14:20:56
也许以下解决方案适合您:
在App.vue中添加Toast并添加一个检查来自商店的消息的手表
sssccc
商店
import { createStore } from "vuex"; export default createStore({ state: { errorMessage: "" }, mutations: { setErrorMessage(state, payload) { state.errorMessage = payload; }, }, actions: {}, modules: {}, getters: { getErrorMessage: (state) => state.errorMessage, }, });
然后,在任何其他组件中只需更新消息
store.commit("setErrorMessage", error.message);
P粉0193532472024-03-20 09:19:55
这个解决方案对我有用,但我不确定这是一个好的解决方案。
第一:从 main.ts 导出应用程序
// main.ts import {createApp} from 'vue'; import App from '@/App.vue'; import PrimeVue from 'primevue/config'; import ToastService from 'primevue/toastservice'; export const app = createApp(App); app.use(PrimeVue); app.use(ToastService); app.mount('#app')
第二:导入应用程序并使用 app.config.globalProperties
的 toast 服务
// myToastService.ts import {ToastSeverity} from 'primevue/api'; import {app} from '@/main'; const lifeTime = 3000; export function info(title: string = 'I am title', body: string = 'I am body'): void { app.config.globalProperties.$toast.add({severity: ToastSeverity.INFO, summary: title, detail: body, life: lifeTime}); }; export function error(title: string = 'I am title', body: string = 'I am body'): void { app.config.globalProperties.$toast.add({severity: ToastSeverity.ERROR, summary: title, detail: body, life: lifeTime}); };
第三:在组件中导入 myToastService。
// myTestToastComponent.vue sssccc