文章の目录
- 一、定义 Action
- 二、触发 Action
-
- 1、触发 actions 的第一种方式
- 2、触发 actions 的第二种方式:
-
- 2.1、从 vuex 中按需导入 mapActions 函数
- 2.2、将指定的 actions 函数,映射为当前组件的 methods 函数
- 写在最后
Action 用于处理异步任务。
如果通过异步操作变更数据,必须通过 Action,而不能使用 Mutation,但是在 Action 中还是要通过触发Mutation 的方式间接变更数据。
一、定义 Action
// 创建store数据源,提供唯一公共数据
export default new Vue.Store({
// state 中存放的就是全局共享的数据
state: {
count: 0
},
mutations: {
add(state) {
// 变更状态
state.count++;
},
addN(state, step) {
state.count += step;
}
},
actions: {
addAsync(context) {
setTimeout(() => {
// 在 actions 中,不能直接修改 state 中的数据;
// 必须通过 context.commit() 触发某个 mutation 才行
context.commit("add");
}, 1000);
}
},
getters: {}
});
触发 actions 异步任务时携带参数:第二个参数即为传递的参数
// 创建store数据源,提供唯一公共数据
export default new Vue.Store({
// state 中存放的就是全局共享的数据
state: {
count: 0
},
mutations: {
add(state) {
// 变更状态
state.count++;
},
addN(state, step) {
state.count += step;
}
},
actions: {
addAsync(context) {
setTimeout(() => {
// 在 actions 中,不能直接修改 state 中的数据;
// 必须通过 context.commit() 触发某个 mutation 才行
context.commit("add");
}, 1000);
},
addNAsync(context, step) {
setTimeout(() => {
context.commit("addN", step);
}, 1000);
}
},
getters: {}
});
二、触发 Action
1、触发 actions 的第一种方式
通过dispatch触发store的异步函数,第一个参数为异步函数名,第二个参数为携带的参数。
this.$store.dispatch("addAsync");
或者
this.$store.dispatch("addNAsync", 5);
2、触发 actions 的第二种方式:
2.1、从 vuex 中按需导入 mapActions 函数
import { mapActions } from "vuex";
通过刚才导入的 mapActions 函数,将需要的 actions 函数,映射为当前组件的 methods 方法:
2.2、将指定的 actions 函数,映射为当前组件的 methods 函数
methods: {
...mapActions(["addAsync", "addNAsync"])
}
写在最后
如果你感觉文章不咋地
//(ㄒoㄒ)//
,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L;~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※
!!!