state中的值是数组对象类型时, 去直接修改/更新state对象中的这个值的属性,没错state中的值是修改到了,但是Vuex监测不到的,所以很简单的方法就是整个对象去替换/赋值,这样Vuex就能监测到state的变化,同事getters也会跟着变化了
赋值之后不会触发getter方法刷新,修改为深拷贝之后即可触发getter刷新
简单的处理方法是,1. 将对象或数组转换成字符串,再转换回来,赋值就解决这个问题了
ADD_MUTATIONS(state, payload){
// json转换是为了页面渲染,state的数据类型包含对象时,可能不会渲染
state.products = JSON.parse(JSON.stringify(state.products))
state.products[payload].num++
localStorage.setItem('products', JSON.stringify(state.products))
}, 2.使用vue自带的方法,强制渲染页面
methods: {
add(index) {
//调用vuex actions
this.add_actions(index);
// 强制渲染页面,采用第一种json转换后可以放弃
this.$forceUpdate();
},
} 
京公网安备 11010502036488号