一、为什么vuex中不能直接调用mutation方法:
参考:https://segmentfault.com/q/1010000008640002
官方文档说明:
我们通过提交 mutation 的方式,而非直接改变 store.state.count,是因为我们想要更明确地追踪到状态的变化
。这个简单的约定能够让你的意图更加明显,这样你在阅读代码的时候能更容易地解读应用内部的状态改变。此外,这样也让我们有机会去实现一些能记录每次状态改变,保存状态快照的调试工具。有了它,我们甚至可以实现如时间穿梭般的调试体验。
由于 store 中的状态是响应式的,在组件中调用 store 中的状态简单到仅需要在计算属性中返回即可。触发变化也仅仅是在组件的 methods 中提交 mutations。
const store = new Vuex.Store({
state: {
count: 1
},
mutations: {
increment (state) {
// 变更状态
state.count++
}
}
})
你不能直接调用一个 mutation handler。这个选项更像是事件注册:“当触发一个类型为 increment 的 mutation 时,调用此函数。”要唤醒一个 mutation handler,你需要以相应的 type 调用 store.commit 方法:
store.commit('increment')
二、vuex 的dispatch和commit提交mutation的区别:
当你的操作行为中含有异步操作,比如向后台发送请求获取数据,就需要使用action的dispatch去完成了。
其他使用commit即可。
三、let与var有什么区别
参考:https://www.jianshu.com/p/bf548e0ee60b
- let : 变量只能声明一次
- var : 变量可以多次声明
let的好处是当我们写代码比较多的时候可以避免在不知道的情况下重复声明变量.
另外 for循环中推荐使用let,详情见参考链接。