带着大家去试试不就知道了。只能mutations去改变仅仅是一个约定。
首先试试mutations
mutations: {
updateData(state, obj) {
// 都说mutations不可以进行异步请求那试试呗
setInterval(() => {
state.age++
}, 3000)
console.log(state, obj)
}
},
mutations解析:
- 可以进行异步处理,正常模式下不会报错。
- 严格模式下: 会报错,数据正常被修改。 -dectools工具: 监听不到state的变化。因为异步请求state变化之后就不会请求mutations这个方法。dectools工具只是根据mutations执行的次数来监听数据的变化。 同步就不说了。
actions
actions: {
updateMutations(context, payload) {
context.state.age++
console.log(context, payload)
}
},
- actions直接改变状态看看会怎么样。
- 数据可以正常改变,非严格模式不会报错。
- 严格模式报错,数据正常改变。
- devtools工具并不会触发改变
getters
getters: {
data(state) {
state.age = 112
return state.age
}
}
getters改变完了之后mutations 都不能 actions再改变其状态。当然这个也是不能被devtools监听 同样严格模式下会报错。
总结: 其实mutations异步更改 actions直接更改, 或者组件里直接更改状态,其实都可以,只是严格模式下回报错。但是也不影响状态修改。但是官方推荐你这样做。还有就是devtools里面无法监听数据的变化。还有就是这样改完数据其实 跟你正常修改数据没什么不一样的。