首页IT科技vue中的action(Vuex系列之 Action 的使用)

vue中的action(Vuex系列之 Action 的使用)

时间2025-09-19 12:53:09分类IT科技浏览10566
导读:Action 用于处理异步任务。...

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^)\\\~~~

谢谢各位读者们啦(^_^)∠※!!!
声明:本站所有文章                           ,如无特殊说明或标注         ,均为本站原创发布                   。任何个人或组织                   ,在未征得本站同意时                            ,禁止复制         、盗用                            、采集                  、发布本站内容到任何网站         、书籍等各类媒体平台                            。如若本站内容侵犯了原著者的合法权益         ,可联系我们进行处理         。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
第七小组的口号(20220712_第七小组_张红睿_学习笔记)