Vue.use(Vuex); const store = new Vuex.Store({ state, mutations, actions, modules }); // 此时 store 等于 this.$options.store new Vue({ el: "#app", store });
在 Vuex.Store 这个构造函数中,会执行resetStoreVM(this, state)
1 2 3 4 5 6 7 8 9 10
// src/store.js functionresetStoreVM(store, state, hot) { // 省略无关代码 store._vm = new Vue({ data: { $$state: state }, computed }); }
从上面的代码可以看出,其本质就是将我们传入的 state 作为一个隐藏的 vue 组件的 data,也就是说,我们的 commit 操作,本质上是修改这个组件的 data 。