Vuex: mutations
by ecoblack
HTML
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/[email protected]"></script>
<div id="app"></div>
JavaScript
const store = new Vuex.Store({
state: {
count: 1
},
// 1. 更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。使用 mutation 作为变更 store 中的状态的唯一方式使得应用状态更为可控,并且结合开发者工具可以获得时空机般的调试体验
mutations: {
increment (state, payload) {
state.count += payload;
}
}
})
new Vue({
store,
template: `
<div>
{{count}}
<button @click="increment(1)">+1</button>
<button @click="increment(2)">+2</button>
</div>
`,
computed: {
count() {
return this.$store.state.count;
}
},
methods: {
increment(number) {
// 2. 提交 mutation 使用 store.commit() 方法,第一个参数是提交的 mutation 名,第二个参数是提交的载荷(也就是数据)
this.$store.commit('increment', number);
}
}
}).$mount('#app');