vuex commit 与dispatch
时间: 2023-08-14 16:13:00 浏览: 103
Vuex 是一个用于状态管理的库,它可以帮助我们在 Vue.js 应用中进行状态的集中管理。在 Vuex 中,我们可以使用 `commit` 和 `dispatch` 来触发状态的变更。
`commit` 用于同步地触发一个 mutation,它的第一个参数是 mutation 的名称,第二个参数是传递给 mutation 的数据。例如:
```javascript
// 在组件中调用 commit
this.$store.commit('increment', 10);
// 在 Vuex 的 store 中定义一个 mutation
mutations: {
increment(state, amount) {
state.count += amount;
}
}
```
`dispatch` 用于异步地触发一个 action,它的用法和 `commit` 类似。与 `commit` 不同的是,action 可以包含异步操作,并且可以通过 `context` 对象来调用其他的 action 或者 commit mutation。例如:
```javascript
// 在组件中调用 dispatch
this.$store.dispatch('asyncIncrement', 10);
// 在 Vuex 的 store 中定义一个 action
actions: {
asyncIncrement(context, amount) {
setTimeout(() => {
context.commit('increment', amount);
}, 1000);
}
}
```
总结起来,`commit` 用于同步地触发一个 mutation,而 `dispatch` 用于异步地触发一个 action,可以执行一些异步操作后再去触发 mutation 来修改状态。
阅读全文