vuex中state对象中的值更新后getters没有监听到state数据的改变的问题,state数据跟新页面不刷新问题
问题就出现在使用这样的写法直接修改/更新state对象中的值,state中的值是修改了,但是vuex监测不到,所以很简单的方法就是整个对象去替换/赋值,这样vuex就能监测到state的变化,同时getters也会跟着变化简单的处理方法是,将对象或数组转换成字符串,在转换回来,赋值就解决这个问题了downNum(state,id){//将对象转换一下,从新开辟内存空间保持,然后在从新赋值,完美解决
·
问题就出现在使用这样的写法直接修改/更新state对象中的值,state中的值是修改了,但是vuex监测不到,所以很简单的方法就是整个对象去替换/赋值,这样vuex就能监测到state的变化,同时getters也会跟着变化
简单的处理方法是,将对象或数组转换成字符串,在转换回来,赋值就解决这个问题了
downNum(state,id){
//将对象转换一下,从新开辟内存空间保持,然后在从新赋值,完美解决
let cartGood=JSON.parse(JSON.stringify(stata.cartGoods));
cartGood[idx].num--;
state.cartGood=cartGood;
}
第一种方法:可以通过JSON序列化来实现
vuex的mutations
add(state,id){
let idx=state.cartGoods.findIndex((item)=>item.id==id);
let goodsArr=JSON.parse(JSON.stringify(state.cartGoods));
goodsArr[idx].num++;
state.cartGoods=goodsArr;
}
第二种办法:可以使用vue提供的$forceUpdata方法
vuex的actions
add(context,id){
context.commit('add',id)
}
vuex的mutations
add(state,id){
let idx=state.cartGoods.findIndex((item)=>item.id==id);
state.cartGoods[idx].num++;
}
页面组件代码
methods:{
...mapActions(['add']),
add(id){
this.add(id);
//调用完成vuex中的actions操作方法对数据进行改变后
//强制重新渲染页面,触发update生命周期钩子函数
this.$forceUpdate();
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)