留人间多少爱,迎浮世千重变,和有情人做快乐事,不问是劫是缘。
Action
Action 类似于 mutation
不同之处
- Action 提交的是 mutation,而不是直接变更状态。
- Action 可以包含任意异步操作。
Action 使用
1 | import { createStore } from 'vuex'; |
- 组件调用
1 | this.$store.dispatch({ type: 'changeName', name: value }); |
Action 分发
- mutation 必须同步执行,Action 不受约束
1 | actions: { |
mapActions 辅助函数
- mapActions 辅助函数将 store 中的 actions 方法映射到组件
- this.$store.dispatch() 的另一种写法
1 | import { mapActions } from 'vuex'; |
异步 Action
- store.dispatch 可以处理被触发的 action 的处理函数返回的 Promise,并且 store.dispatch 仍旧返回 Promise 。
1 | actions: { |
- 调用
1 | this.$store.dispatch({ type: 'changeName', name: value }).then((response) => { |
组合 Action
1 | // 假设 getData() 和 getOtherData() 返回的是 Promise |
- 一个 store.dispatch 在不同模块中可以触发多个 action 函数。在这种情况下,只有当所有触发函数完成后,返回的 Promise 才会执行。