Vuex 的 actions 应该避免直接操作 state,state 的更改应该由 mutations 去修改,不然 vue-devtools 插件记录不到 state 变更,
actions 可以根据当前 state 进一步处理数据,计算或请求后端接口,然后通过 commit 的形式提交给 mutations 去处理。
本节计数器 actions 部分直接操作了 state ,这个写法有问题,正确代码如下:
increment({commit}) { setTimeout(()=>{ commit('increment') }, 3000) }
复制代码
https://github.com/geektime-geekbang/geektime-vue-1/tree/master/vuex-demo1
https://github.com/geektime-geekbang/geektime-vue-1/tree/master/vuex-demo2
https://github.com/geektime-geekbang/geektime-vue-1/tree/master/vuex-demo3
作者回复: 感谢提醒,的确不应该在actions里面去操作state,这样devtools就记录不到变化状态了,传的依然是context哈,注意state两边的大括号,他的作用就是从context里面取出来 state,也是es6的语法,正确代码应该是:
actions: {
increment({commit}) {
setTimeout(()=>{
commit('increment')
}, 3000)
}
},
编辑回复: 下周开始更新实战部分
作者回复: 就是使用系统自带的,mac terminal,如果你也使用的mac,看到的和我不一样,是我自己自定义了主题。
作者回复: 没必要的,单个状态没有任何意义,涉及到进一步计算合并才使用getter
作者回复: 不应该,版本依赖并不需要自己配置,这也是相对于java的优势,你完全可以不懂node,就可以使用vue
作者回复: 重装试试吧 npm建议使用 taobao 源。