您现在的位置是:亿华云 > 域名
Vuex中的Modules你知道多少?
亿华云2025-10-03 13:57:52【域名】3人已围观
简介为什么会出现VueX的模块呢?当你的项目中代码变多的时候,很难区分维护。那么这时候Vuex的模块功能就这么体现出来了。那么我们就开始吧!一、模块是啥?/*eslint-disableno-unused
为什么会出现VueX的中的s知模块呢?当你的项目中代码变多的时候,很难区分维护。道多那么这时候Vuex的中的s知模块功能就这么体现出来了。
那么我们就开始吧!
一、道多模块是中的s知啥?
/* eslint-disable no-unused-vars */ import Vue from vue import Vuex from vuex Vue.use(Vuex) export default new Vuex.Store({ state:{ global:this is global }, // 在以下属性可以添加多个模块。如:moduleOne模块、道多moduleTwo模块。中的s知 modules: { moduleOne:{ },道多 moduleTwo:{ } } })二、在模块内添加state
可以直接在模块中直接书写state对象。中的s知
/* eslint-disable no-unused-vars */ import Vue from vue import Vuex from vuex Vue.use(Vuex) export default new Vuex.Store({ state:{ global:this is global },道多 modules: { moduleOne:{ state:{ moduleOnevalue:1 } }, moduleTwo:{ state:{ moduleTwovalue:0 } } } })我们在页面中引用它。我们直接可以找到对应的中的s知模块返回值,也可以使用mapState方法调用。道多
<template> <div class="home"> <p>moduleOne_state:{ { moduleOne}}</p> <p>moduleTwo_state:{ { moduleTwo}}</p> <p>moduleOne_mapState:{ { moduleOnevalue}}</p> <p>moduleTwo_mapState:{ { moduleTwovalue}}</p> </div> </template> <script> import { mapState} from vuex export default { name:"Home",中的s知 data() { return { msg:"this is Home" } }, computed: { moduleOne(){ // 这里使用了命名空间 return this.$store.state.moduleOne.moduleOnevalue }, moduleTwo(){ return this.$store.state.moduleTwo.moduleTwovalue }, ...mapState({ moduleOnevalue:(state)=>state.moduleOne.moduleOnevalue, moduleTwovalue:(state)=>state.moduleTwo.moduleTwovalue }) }, methods: { }, mounted() { }, } </script>三、在模块中添加mutations
我们分别给两个模块添加mutations属性,道多在里面定义相同名字的中的s知方法,我们先在页面看一下。
/* eslint-disable no-unused-vars */ import Vue from vue import Vuex from vuex Vue.use(Vuex) export default new Vuex.Store({ state:{ global:this is global }, modules: { moduleOne:{ state:{ moduleOnevalue:1 }, mutations:{ updateValue(state,value){ state.moduleOnevalue=value } } }, moduleTwo:{ state:{ moduleTwovalue:0 }, mutations:{ updateValue(state,value){ state.moduleTwovalue=value } } } } })在页面引用它
<template> <div class="home"> <p>moduleOne_state:{ { moduleOne}}</p> <p>moduleTwo_state:{ { moduleTwo}}</p> <p>moduleOne_mapState:{ { moduleOnevalue}}</p> <p>moduleTwo_mapState:{ { moduleTwovalue}}</p> </div> </template> <script> // eslint-disable-next-line no-unused-vars import { mapState,mapMutations} from vuex export default { name:"Home", data() { return { msg:"this is Home" } }, computed: { moduleOne(){ return this.$store.state.moduleOne.moduleOnevalue }, moduleTwo(){ return this.$store.state.moduleTwo.moduleTwovalue }, ...mapState({ moduleOnevalue:(state)=>state.moduleOne.moduleOnevalue, moduleTwovalue:(state)=>state.moduleTwo.moduleTwovalue }) }, methods: { ...mapMutations([updateValue]) }, mounted() { this.updateValue(我是改变后的值:1) }, } </script>我们看到两个模块的高防服务器值都被改变了,为什么呢?因为VueX默认情况下,每个模块中的mutations都是在全局命名空间下的。那么我们肯定不希望这样。如果两个模块中的方法名不一样,当然不会出现这种情况,但是怎么才能避免这种情况呢?
我们需要定义一个属性namespaced为true。
/* eslint-disable no-unused-vars */ import Vue from vue import Vuex from vuex Vue.use(Vuex) export default new Vuex.Store({ state:{ global:this is global }, modules: { moduleOne:{ namespaced:true, //在每个模块中定义为true,可以避免方法重名 state:{ moduleOnevalue:1 }, mutations:{ updateValue(state,value){ state.moduleOnevalue=value } } }, moduleTwo:{ namespaced:true, state:{ moduleTwovalue:0 }, mutations:{ updateValue(state,value){ state.moduleTwovalue=value } } } } })在页面中需要使用命名空间的方法调用它。
<template> <div class="home"> <p>moduleOne_state:{ { moduleOne}}</p> <p>moduleTwo_state:{ { moduleTwo}}</p> <p>moduleOne_mapState:{ { moduleOnevalue}}</p> <p>moduleTwo_mapState:{ { moduleTwovalue}}</p> </div> </template> <script> // eslint-disable-next-line no-unused-vars import { mapState,mapMutations,mapGetters,mapActions} from vuex export default { name:"Home", data() { return { msg:"this is Home" } }, computed: { moduleOne(){ return this.$store.state.moduleOne.moduleOnevalue }, moduleTwo(){ return this.$store.state.moduleTwo.moduleTwovalue }, ...mapState({ moduleOnevalue:(state)=>state.moduleOne.moduleOnevalue, moduleTwovalue:(state)=>state.moduleTwo.moduleTwovalue }) }, methods: { ...mapMutations([moduleOne/updateValue,moduleTwo/updateValue]) }, mounted() { this[moduleOne/updateValue](我是改变后的值:1); this[moduleTwo/updateValue](我是改变后的值:0); }, } </script>四、在模块中添加getters
namespaced 同样在 getters也生效,下面我们在两个模块中定义了相同名字的方法。
/* eslint-disable no-unused-vars */ import Vue from vue import Vuex from vuex Vue.use(Vuex) export default new Vuex.Store({ state:{ global:this is global }, modules: { moduleOne:{ namespaced:true, state:{ moduleOnevalue:1 }, mutations:{ updateValue(state,value){ state.moduleOnevalue=value } }, getters:{ valuePlus(state){ return state.moduleOnevalue+1 } } }, moduleTwo:{ namespaced:true, state:{ moduleTwovalue:0 }, mutations:{ updateValue(state,value){ state.moduleTwovalue=value } }, getters:{ valuePlus(state){ return state.moduleTwovalue+0 } } } } })在页面引用查看效果。
<template> <div class="home"> <p>moduleOne_state:{ { moduleOne}}</p> <p>moduleTwo_state:{ { moduleTwo}}</p> <p>moduleOne_mapState:{ { moduleOnevalue}}</p> <p>moduleTwo_mapState:{ { moduleTwovalue}}</p> <p>moduleOne_mapGetters:{ { OnevaluePlus}}</p> <p>moduleTwo_mapGetters:{ { TwovaluePlus}}</p> </div> </template> <script> // eslint-disable-next-line no-unused-vars import { mapState,mapMutations,mapGetters,mapActions} from vuex export default { name:"Home", data() { return { msg:"this is Home" } }, computed: { moduleOne(){ return this.$store.state.moduleOne.moduleOnevalue }, moduleTwo(){ return this.$store.state.moduleTwo.moduleTwovalue }, ...mapState({ moduleOnevalue:(state)=>state.moduleOne.moduleOnevalue, moduleTwovalue:(state)=>state.moduleTwo.moduleTwovalue }), ...mapGetters({ OnevaluePlus:moduleOne/valuePlus, TwovaluePlus:moduleTwo/valuePlus }) }, methods: { ...mapMutations([moduleOne/updateValue,moduleTwo/updateValue]) }, mounted() { // this[moduleOne/updateValue](我是改变后的值:1); // this[moduleTwo/updateValue](我是改变后的值:0); }, } </script>我们也可以获取全局的变量,第三个参数就是获取全局变量的参数。
/* eslint-disable no-unused-vars */ import Vue from vue import Vuex from vuex Vue.use(Vuex) export default new Vuex.Store({ state:{ global:this is global }, modules: { moduleOne:{ namespaced:true, state:{ moduleOnevalue:1 }, mutations:{ updateValue(state,value){ state.moduleOnevalue=value } }, getters:{ valuePlus(state){ return state.moduleOnevalue+1 }, globalValuePlus(state,getters,rootState){ return state.moduleOnevalue+rootState.global } } }, moduleTwo:{ namespaced:true, state:{ moduleTwovalue:0 }, mutations:{ updateValue(state,value){ state.moduleTwovalue=value } }, getters:{ valuePlus(state){ return state.moduleTwovalue+0 }, globalValuePlus(state,getters,rootState){ return state.moduleTwovalue+rootState.global } } } } })在页面查看。服务器租用
<template> <div class="home"> <p>moduleOne_state:{ { moduleOne}}</p> <p>moduleTwo_state:{ { moduleTwo}}</p> <p>moduleOne_mapState:{ { moduleOnevalue}}</p> <p>moduleTwo_mapState:{ { moduleTwovalue}}</p> <p>moduleOne_mapGetters:{ { OnevaluePlus}}</p> <p>moduleTwo_mapGetters:{ { TwovaluePlus}}</p> <p>moduleOne_mapGetters_global:{ { OneglobalValue}}</p> <p>moduleTwo_mapGetters_global:{ { TwoglobalValue}}</p> </div> </template> <script> // eslint-disable-next-line no-unused-vars import { mapState,mapMutations,mapGetters,mapActions} from vuex export default { name:"Home", data() { return { msg:"this is Home" } }, computed: { moduleOne(){ return this.$store.state.moduleOne.moduleOnevalue }, moduleTwo(){ return this.$store.state.moduleTwo.moduleTwovalue }, ...mapState({ moduleOnevalue:(state)=>state.moduleOne.moduleOnevalue, moduleTwovalue:(state)=>state.moduleTwo.moduleTwovalue }), ...mapGetters({ OnevaluePlus:moduleOne/valuePlus, TwovaluePlus:moduleTwo/valuePlus, OneglobalValue:moduleOne/globalValuePlus, TwoglobalValue:moduleTwo/globalValuePlus }) }, methods: { ...mapMutations([moduleOne/updateValue,moduleTwo/updateValue]) }, mounted() { // this[moduleOne/updateValue](我是改变后的值:1); // this[moduleTwo/updateValue](我是改变后的值:0); }, } </script>也可以获取其他模块的变量。
/* eslint-disable no-unused-vars */ import Vue from vue import Vuex from vuex Vue.use(Vuex) export default new Vuex.Store({ state:{ global:this is global }, modules: { moduleOne:{ namespaced:true, state:{ moduleOnevalue:1 }, mutations:{ updateValue(state,value){ state.moduleOnevalue=value } }, getters:{ valuePlus(state){ return state.moduleOnevalue+1 }, globalValuePlus(state,getters,rootState){ return state.moduleOnevalue+rootState.global }, otherValuePlus(state,getters,rootState){ return state.moduleOnevalue+rootState.moduleTwo.moduleTwovalue }, } }, moduleTwo:{ namespaced:true, state:{ moduleTwovalue:0 }, mutations:{ updateValue(state,value){ state.moduleTwovalue=value } }, getters:{ valuePlus(state){ return state.moduleTwovalue+0 }, globalValuePlus(state,getters,rootState){ return state.moduleTwovalue+rootState.global }, otherValuePlus(state,getters,rootState){ return state.moduleTwovalue+rootState.moduleOne.moduleOnevalue }, } } } })在页面查看。
<template> <div class="home"> <p>moduleOne_state:{ { moduleOne}}</p> <p>moduleTwo_state:{ { moduleTwo}}</p> <p>moduleOne_mapState:{ { moduleOnevalue}}</p> <p>moduleTwo_mapState:{ { moduleTwovalue}}</p> <p>moduleOne_mapGetters:{ { OnevaluePlus}}</p> <p>moduleTwo_mapGetters:{ { TwovaluePlus}}</p> <p>moduleOne_mapGetters_global:{ { OneglobalValue}}</p> <p>moduleTwo_mapGetters_global:{ { TwoglobalValue}}</p> <p>moduleOne_mapGetters_other:{ { OneotherValue}}</p> <p>moduleTwo_mapGetters_other:{ { TwootherValue}}</p> </div> </template> <script> // eslint-disable-next-line no-unused-vars import { mapState,mapMutations,mapGetters,mapActions} from vuex export default { name:"Home", data() { return { msg:"this is Home" } }, computed: { moduleOne(){ return this.$store.state.moduleOne.moduleOnevalue }, moduleTwo(){ return this.$store.state.moduleTwo.moduleTwovalue }, ...mapState({ moduleOnevalue:(state)=>state.moduleOne.moduleOnevalue, moduleTwovalue:(state)=>state.moduleTwo.moduleTwovalue }), ...mapGetters({ OnevaluePlus:moduleOne/valuePlus, TwovaluePlus:moduleTwo/valuePlus, OneglobalValue:moduleOne/globalValuePlus, TwoglobalValue:moduleTwo/globalValuePlus, OneotherValue:moduleOne/otherValuePlus, TwootherValue:moduleTwo/otherValuePlus }) }, methods: { ...mapMutations([moduleOne/updateValue,moduleTwo/updateValue]) }, mounted() { // this[moduleOne/updateValue](我是改变后的值:1); // this[moduleTwo/updateValue](我是改变后的值:0); }, } </script>
五、在模块中添加actions
actions对象中的方法有一个参数对象ctx。里面分别{ state,commit,rootState}。这里我们直接展开用。actions默认只会提交本地模块中的mutations。如果需要提交全局或者其他模块,需要在commit方法的第三个参数上加上{ root:true}。
/* eslint-disable no-unused-vars */ import Vue from vue import Vuex from vuex Vue.use(Vuex) export default new Vuex.Store({ state:{ global:this is global }, modules: { moduleOne:{ namespaced:true, state:{ moduleOnevalue:1 }, mutations:{ updateValue(state,value){ state.moduleOnevalue=value } }, getters:{ valuePlus(state){ return state.moduleOnevalue+1 }, globalValuePlus(state,getters,rootState){ return state.moduleOnevalue+rootState.global }, otherValuePlus(state,getters,rootState){ return state.moduleOnevalue+rootState.moduleTwo.moduleTwovalue }, }, actions:{ timeOut({ state,commit,rootState}){ setTimeout(()=>{ commit(updateValue,我是异步改变的值:1) },3000) } } }, moduleTwo:{ namespaced:true, state:{ moduleTwovalue:0 }, mutations:{ updateValue(state,value){ state.moduleTwovalue=value } }, getters:{ valuePlus(state){ return state.moduleTwovalue+0 }, globalValuePlus(state,getters,rootState){ return state.moduleTwovalue+rootState.global }, otherValuePlus(state,getters,rootState){ return state.moduleTwovalue+rootState.moduleOne.moduleOnevalue }, } } } })页面引用。
<template> <div class="home"> <p>moduleOne_state:{ { moduleOne}}</p> <p>moduleTwo_state:{ { moduleTwo}}</p> <p>moduleOne_mapState:{ { moduleOnevalue}}</p> <p>moduleTwo_mapState:{ { moduleTwovalue}}</p> <p>moduleOne_mapGetters:{ { OnevaluePlus}}</p> <p>moduleTwo_mapGetters:{ { TwovaluePlus}}</p> <p>moduleOne_mapGetters_global:{ { OneglobalValue}}</p> <p>moduleTwo_mapGetters_global:{ { TwoglobalValue}}</p> <p>moduleOne_mapGetters_other:{ { OneotherValue}}</p> <p>moduleTwo_mapGetters_other:{ { TwootherValue}}</p> </div> </template> <script> // eslint-disable-next-line no-unused-vars import { mapState,mapMutations,mapGetters,mapActions} from vuex export default { name:"Home", data() { return { msg:"this is Home" } }, computed: { moduleOne(){ return this.$store.state.moduleOne.moduleOnevalue }, moduleTwo(){ return this.$store.state.moduleTwo.moduleTwovalue }, ...mapState({ moduleOnevalue:(state)=>state.moduleOne.moduleOnevalue, moduleTwovalue:(state)=>state.moduleTwo.moduleTwovalue }), ...mapGetters({ OnevaluePlus:moduleOne/valuePlus, TwovaluePlus:moduleTwo/valuePlus, OneglobalValue:moduleOne/globalValuePlus, TwoglobalValue:moduleTwo/globalValuePlus, OneotherValue:moduleOne/otherValuePlus, TwootherValue:moduleTwo/otherValuePlus }) }, methods: { ...mapMutations([moduleOne/updateValue,moduleTwo/updateValue]), ...mapActions([moduleOne/timeOut]) }, mounted() { // this[moduleOne/updateValue](我是改变后的值:1); // this[moduleTwo/updateValue](我是改变后的值:0); this[moduleOne/timeOut](); }, } </script>下面我们看下如何提交全局或者其他模块的mutations。
/* eslint-disable no-unused-vars */ import Vue from vue import Vuex from vuex Vue.use(Vuex) export default new Vuex.Store({ state:{ global:this is global }, mutations:{ mode(state,data){ state.global=data } }, modules: { moduleOne:{ namespaced:true, state:{ moduleOnevalue:1 }, mutations:{ updateValue(state,value){ state.moduleOnevalue=value } }, getters:{ valuePlus(state){ return state.moduleOnevalue+1 }, globalValuePlus(state,getters,rootState){ return state.moduleOnevalue+rootState.global }, otherValuePlus(state,getters,rootState){ return state.moduleOnevalue+rootState.moduleTwo.moduleTwovalue }, }, actions:{ timeOut({ state,commit,rootState}){ setTimeout(()=>{ commit(updateValue,我是异步改变的值:1) },3000) }, globaltimeOut({ commit}){ setTimeout(()=>{ commit(mode,我改变了global的源码库值,{ root:true}) },3000) } } }, moduleTwo:{ namespaced:true, state:{ moduleTwovalue:0 }, mutations:{ updateValue(state,value){ state.moduleTwovalue=value } }, getters:{ valuePlus(state){ return state.moduleTwovalue+0 }, globalValuePlus(state,getters,rootState){ return state.moduleTwovalue+rootState.global }, otherValuePlus(state,getters,rootState){ return state.moduleTwovalue+rootState.moduleOne.moduleOnevalue }, } } } })页面引用。
<template> <div class="home"> <p>moduleOne_state:{ { moduleOne}}</p> <p>moduleTwo_state:{ { moduleTwo}}</p> <p>moduleOne_mapState:{ { moduleOnevalue}}</p> <p>moduleTwo_mapState:{ { moduleTwovalue}}</p> <p>moduleOne_mapGetters:{ { OnevaluePlus}}</p> <p>moduleTwo_mapGetters:{ { TwovaluePlus}}</p> <p>moduleOne_mapGetters_global:{ { OneglobalValue}}</p> <p>moduleTwo_mapGetters_global:{ { TwoglobalValue}}</p> <p>moduleOne_mapGetters_other:{ { OneotherValue}}</p> <p>moduleTwo_mapGetters_other:{ { TwootherValue}}</p> </div> </template> <script> // eslint-disable-next-line no-unused-vars import { mapState,mapMutations,mapGetters,mapActions} from vuex export default { name:"Home", data() { return { msg:"this is Home" } }, computed: { moduleOne(){ return this.$store.state.moduleOne.moduleOnevalue }, moduleTwo(){ return this.$store.state.moduleTwo.moduleTwovalue }, ...mapState({ moduleOnevalue:(state)=>state.moduleOne.moduleOnevalue, moduleTwovalue:(state)=>state.moduleTwo.moduleTwovalue }), ...mapGetters({ OnevaluePlus:moduleOne/valuePlus, TwovaluePlus:moduleTwo/valuePlus, OneglobalValue:moduleOne/globalValuePlus, TwoglobalValue:moduleTwo/globalValuePlus, OneotherValue:moduleOne/otherValuePlus, TwootherValue:moduleTwo/otherValuePlus }) }, methods: { ...mapMutations([moduleOne/updateValue,moduleTwo/updateValue]), ...mapActions([moduleOne/timeOut,moduleOne/globaltimeOut]) }, mounted() { // this[moduleOne/updateValue](我是改变后的值:1); // this[moduleTwo/updateValue](我是改变后的值:0); // this[moduleOne/timeOut](); this[moduleOne/globaltimeOut](); }, } </script>那么提交其他模块的呢?
/* eslint-disable no-unused-vars */ import Vue from vue import Vuex from vuex Vue.use(Vuex) export default new Vuex.Store({ state:{ global:this is global }, mutations:{ mode(state,data){ state.global=data } }, modules: { moduleOne:{ namespaced:true, state:{ moduleOnevalue:1 }, mutations:{ updateValue(state,value){ state.moduleOnevalue=value } }, getters:{ valuePlus(state){ return state.moduleOnevalue+1 }, globalValuePlus(state,getters,rootState){ return state.moduleOnevalue+rootState.global }, otherValuePlus(state,getters,rootState){ return state.moduleOnevalue+rootState.moduleTwo.moduleTwovalue }, }, actions:{ timeOut({ state,commit,rootState}){ setTimeout(()=>{ commit(updateValue,我是异步改变的值:1) },3000) }, globaltimeOut({ commit}){ setTimeout(()=>{ commit(mode,我改变了global的值,{ root:true}) },3000) }, othertimeOut({ commit}){ setTimeout(()=>{ commit(moduleTwo/updateValue,我改变了moduleTwo的值,{ root:true}) },3000) } } }, moduleTwo:{ namespaced:true, state:{ moduleTwovalue:0 }, mutations:{ updateValue(state,value){ state.moduleTwovalue=value } }, getters:{ valuePlus(state){ return state.moduleTwovalue+0 }, globalValuePlus(state,getters,rootState){ return state.moduleTwovalue+rootState.global }, otherValuePlus(state,getters,rootState){ return state.moduleTwovalue+rootState.moduleOne.moduleOnevalue }, } } } })页面引用。
<template> <div class="home"> <p>moduleOne_state:{ { moduleOne}}</p> <p>moduleTwo_state:{ { moduleTwo}}</p> <p>moduleOne_mapState:{ { moduleOnevalue}}</p> <p>moduleTwo_mapState:{ { moduleTwovalue}}</p> <p>moduleOne_mapGetters:{ { OnevaluePlus}}</p> <p>moduleTwo_mapGetters:{ { TwovaluePlus}}</p> <p>moduleOne_mapGetters_global:{ { OneglobalValue}}</p> <p>moduleTwo_mapGetters_global:{ { TwoglobalValue}}</p> <p>moduleOne_mapGetters_other:{ { OneotherValue}}</p> <p>moduleTwo_mapGetters_other:{ { TwootherValue}}</p> </div> </template> <script> // eslint-disable-next-line no-unused-vars import { mapState,mapMutations,mapGetters,mapActions} from vuex export default { name:"Home", data() { return { msg:"this is Home" } }, computed: { moduleOne(){ return this.$store.state.moduleOne.moduleOnevalue }, moduleTwo(){ return this.$store.state.moduleTwo.moduleTwovalue }, ...mapState({ moduleOnevalue:(state)=>state.moduleOne.moduleOnevalue, moduleTwovalue:(state)=>state.moduleTwo.moduleTwovalue }), ...mapGetters({ OnevaluePlus:moduleOne/valuePlus, TwovaluePlus:moduleTwo/valuePlus, OneglobalValue:moduleOne/globalValuePlus, TwoglobalValue:moduleTwo/globalValuePlus, OneotherValue:moduleOne/otherValuePlus, TwootherValue:moduleTwo/otherValuePlus }) }, methods: { ...mapMutations([moduleOne/updateValue,moduleTwo/updateValue]), ...mapActions([moduleOne/timeOut,moduleOne/globaltimeOut,moduleOne/othertimeOut]) }, mounted() { // this[moduleOne/updateValue](我是改变后的值:1); // this[moduleTwo/updateValue](我是改变后的值:0); // this[moduleOne/timeOut](); // this[moduleOne/globaltimeOut](); this[moduleOne/othertimeOut](); }, } </script>注意:你可以在module中再继续添加模块,可以无限循环下去。
六、动态注册模块
有时候,我们会使用router的异步加载路由,有些地方会用不到一些模块的数据,那么我们利用VueX的动态注册模块。我们来到入口文件main.js中。
import Vue from vue import App from ./App.vue import router from ./router import store from ./store Vue.config.productionTip = false // 动态注册模块 store.registerModule(moduleThree,{ state:{ text:"this is moduleThree" } }) new Vue({ router, store, render: h => h(App) }).$mount(#app)在页面引用它。
<template> <div class="home"> <p>moduleOne_state:{ { moduleOne}}</p> <p>moduleTwo_state:{ { moduleTwo}}</p> <p>moduleOne_mapState:{ { moduleOnevalue}}</p> <p>moduleTwo_mapState:{ { moduleTwovalue}}</p> <p>moduleOne_mapGetters:{ { OnevaluePlus}}</p> <p>moduleTwo_mapGetters:{ { TwovaluePlus}}</p> <p>moduleOne_mapGetters_global:{ { OneglobalValue}}</p> <p>moduleTwo_mapGetters_global:{ { TwoglobalValue}}</p> <p>moduleOne_mapGetters_other:{ { OneotherValue}}</p> <p>moduleTwo_mapGetters_other:{ { TwootherValue}}</p> <p>moduleThree_mapState:{ { moduleThreetext}}</p> </div> </template> <script> // eslint-disable-next-line no-unused-vars import { mapState,mapMutations,mapGetters,mapActions} from vuex export default { name:"Home", data() { return { msg:"this is Home" } }, computed: { moduleOne(){ return this.$store.state.moduleOne.moduleOnevalue }, moduleTwo(){ return this.$store.state.moduleTwo.moduleTwovalue }, ...mapState({ moduleOnevalue:(state)=>state.moduleOne.moduleOnevalue, moduleTwovalue:(state)=>state.moduleTwo.moduleTwovalue, moduleThreetext:(state)=>state.moduleThree.text }), ...mapGetters({ OnevaluePlus:moduleOne/valuePlus, TwovaluePlus:moduleTwo/valuePlus, OneglobalValue:moduleOne/globalValuePlus, TwoglobalValue:moduleTwo/globalValuePlus, OneotherValue:moduleOne/otherValuePlus, TwootherValue:moduleTwo/otherValuePlus }) }, methods: { ...mapMutations([moduleOne/updateValue,moduleTwo/updateValue]), ...mapActions([moduleOne/timeOut,moduleOne/globaltimeOut,moduleOne/othertimeOut]) }, mounted() { // this[moduleOne/updateValue](我是改变后的值:1); // this[moduleTwo/updateValue](我是改变后的值:0); // this[moduleOne/timeOut](); // this[moduleOne/globaltimeOut](); // this[moduleOne/othertimeOut](); }, } </script>本文转载自微信公众号「前端历劫之路」,可以通过以下二维码关注。转载本文请联系前端历劫之路公众号。
很赞哦!(64887)
上一篇: 数据中心如何进行定制化配电设计?
下一篇: 评估数据中心总成本的五大因素