Vuex Subscribe无通知显示:PWA创建用户时通知不生效且无报错
解决PWA中Vuex订阅mutation后Quasar通知不显示的问题
看起来你遇到的核心问题大概率是对Vuex subscribe的mutation参数判断错误,我来帮你一步步排查和修复:
1. 最关键的错误:mutation参数类型判断错误
Vuex的store.subscribe回调里的第一个参数mutation是一个对象,包含type(mutation名称字符串)和payload(mutation的负载数据),而不是直接的字符串。你现在用if (mutation === 'usuario/setError'),这个条件永远不会成立,自然不会触发通知。
修复方式:
把判断条件改成检查mutation.type:
this.$store.subscribe(function(mutation, state) { // 这里要判断mutation.type,而不是mutation本身 if (mutation.type === 'usuario/setError') { self.$q.notify({ message: state.usuario.error.mensagem, timeout: 3000, // 确保type的逻辑完整,比如补充完整三元表达式 type: state.usuario.error.sucesso ? 'positive' : 'negative' }) } })
2. 其他可能的排查点
- 调试确认mutation是否触发:在subscribe回调里先加
console.log(mutation, state.usuario.error),看看当你创建用户时,usuario/setErrormutation是否真的被触发,以及state.usuario.error有没有正确赋值mensagem和sucesso字段。 - 简化notify配置测试:先把notify改成最简单的形式,排除配置错误:
如果这个能显示,再逐步加message、type等配置。self.$q.notify('测试通知') - 避免self的绑定问题:可以用箭头函数替代
var self = this,让this自动指向组件实例,代码更简洁:mounted() { this.$store.subscribe((mutation, state) => { if (mutation.type === 'usuario/setError') { this.$q.notify({ message: state.usuario.error.mensagem, timeout: 3000, type: state.usuario.error.sucesso ? 'positive' : 'negative' }) } }) } - 检查Quasar notify的依赖:确保你的Quasar项目已经正确引入了Notify插件(默认是引入的,但如果是自定义配置的话,需要确认
quasar.conf.js里framework.plugins包含Notify)。
修改后的完整示例代码
export default { // ...其他组件选项 mounted() { this.$store.subscribe((mutation, state) => { // 确认mutation类型正确 if (mutation.type === 'usuario/setError') { // 先打印调试,确认数据是否正确 console.log('触发setError mutation:', state.usuario.error) this.$q.notify({ message: state.usuario.error.mensagem, timeout: 3000, // 确保type是Quasar支持的有效值:positive/negative/warning/info type: state.usuario.error.sucesso ? 'positive' : 'negative' }) } }) } }
先按这个思路修改,应该就能解决通知不显示的问题了,如果还有问题,可以看控制台打印的state.usuario.error数据是否符合预期。
内容的提问来源于stack exchange,提问作者Guto
相关产品推荐
相关产品推荐

