Vue Vuex搭建vuex环境及vuex求和的方法
同时 index.js 中的 action 中添加对应的方法名,从图上的流程图来看,actions 中的东西会交到 mutations 中处理,所以需要手动调用 commit方法
mutation 中也需要增加同样的方法名,这里可以都改成大写,做个区分。方法中第一个参数就是 state,方法中处理真实逻辑即可
index.js
//该文件用于创建vuex中最为核心的store//引入vueximportVuexfrom'vuex'//引入vueimportVuefrom"vue";//应用vuex插件Vue.use(Vuex)//准备actions;用于相应组件中的动作constactions={/*jia:function(){}*///简写为:jia(context,value){console.log("actions中的jia被调用了",context,value);context.commit("JIA",value)}}//准备mutations;用于操作数据(state)constmutations={JIA(state,value){console.log("mutations中的JIA被调用了",state,value);state.sum+=value;}}//准备state;用于存储数据conststate={sum:0,//当前和}//创建并暴露storeexportdefaultnewVuex.Store({actions:actions,mutations,//key和value重名了,简写state,//key和value重名了,简写});
log 输出:
运行程序:
我们根据以上思路完善其他方法
Count.vue
当前求和为:{{$store.state.sum}}
index.js
//该文件用于创建vuex中最为核心的store//引入vueximportVuexfrom'vuex'//引入vueimportVuefrom"vue";//应用vuex插件Vue.use(Vuex)//准备actions;用于相应组件中的动作constactions={/*jia:function(){}*///简写为:jia(context,value){console.log("actions中的jia被调用了");context.commit("JIA",value)},jiaOdd(context,value){console.log("actions中的jianOdd被调用了");if(context.state.sum%2){context.commit("JIA",value)}},jiaWait(context,value){console.log("actions中的jianWait被调用了");setTimeout(()=>{context.commit("JIA",value)},500)}}//准备mutations;用于操作数据(state)constmutations={JIA(state,value){console.log("mutations中的JIA被调用了",state,value);state.sum+=value;},JIAN(state,value){console.log("mutations中的JIAN被调用了",state,value);state.sum-=value;}}//准备state;用于存储数据conststate={sum:0,//当前和}//创建并暴露storeexportdefaultnewVuex.Store({actions:actions,mutations,//key和value重名了,简写state,//key和value重名了,简写});
到此为止,功能就实现了,你发现了吗,这里做了些优化,由于 index.js 中的 jia、jian方法里边什么都没做,直接就 commit 给了 mutation,而 vc 是可以直接对话 Mutations 的,如下图:
所以我们把 index.js 中 actions 中的 jian方法去掉,在 Count 中直接调用 mutation 中的方法,也就是我们把 jian方法去掉,在 Count 的 decrement 方法中直接调用 commit 了
decrement(){this.$store.commit("JIAN",this.n);},
若没有网络请求或其他业务逻辑,组件中也可以越过 actions,即不写 dispatch,直接编写 commit
一些疑惑和问题
index.js 中的上下文有什么作用?我们可以打印下 context:
可以看到其中有dispatch、commit、state这些熟悉的身影。我们用 jiaOdd 举例,当方法逻辑处理复杂时,可以继续 dispatch 其他方法来分担。而有了 state 我们可以拿到其中的 sum 值:
jiaOdd(context,value){console.log("actions中的jianOdd被调用了",context);if(context.state.sum%2){context.commit("JIA",value)}context.dispatch("demo",value)},demo(){//处理一些事情},
以上就是“VueVuex搭建vuex环境及vuex求和的方法”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注恰卡编程网行业资讯频道。