在项目中遇到一个问题,用vuex管理状态和数据,actions->mutations->state 这种方式去修改state数据,getters获取数据,组件中在computed去更新获取的数据,问题是数据在mutations中更新,但在getters中没有更新,而且getters只执行了一次 是什么原因呢?
store中:
组件中:
触发submmitForm()方法会去请求数据
在项目中遇到一个问题,用vuex管理状态和数据,actions->mutations->state 这种方式去修改state数据,getters获取数据,组件中在computed去更新获取的数据,问题是数据在mutations中更新,但在getters中没有更新,而且getters只执行了一次 是什么原因呢?
store中:
组件中:
触发submmitForm()方法会去请求数据
感觉题主最后给出的解决方案很含糊啊,而且经测试好像不行的,我是这样解决的:
在文件顶部先引用vue,mutaions里面这样写,Vue.set(state,'messageList',res.data.messageList);通过这种方式就可以触发getters的更新
Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性)。就像计算属性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。
很明显笔者应该是自己的demo 出了问题;
mutations 里面对state值的修改没有被getters监听到,getters输出的还是缓存所以没有改变,解决方案可以尝试换一种mutations里修改state的方式
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答4.6k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答5k 阅读
刚好碰到这个问题,对vue不是很熟悉,第一次用,看了一下文档,把原来的写法:currentRouter:state=>state.routerConfig.currentRouter 改成 currentRouter:state=>()=>state.routerConfig.currentRouter ,同时,获取的时候是个函数应用,你执行一下就好了,这样拿到的getter数据就不是原来缓存的数据了。