Vuex modules模式下mapState/mapMutations的操作实例
当我们使用Vuex实现全局状态维护时,可能需要将状态值划分多个模块,比如一些root级的用户登录状态,token,用户级的用户信息,购物车级的购物车信息。
下面我们实例演示下如何在多模块下使用mapState/mapMutations。
- modules只作用于属性,属性会归属在相应的模块名的命名空间下。
- mutations,actions,getter没有命名空间的限定,所以要保证全局的唯一性,否则后者会覆盖前者
store/index.js
importVuefrom'vue'
importVuexfrom'vuex'
importuserfrom'./user'
importorderfrom'./order'
Vue.use(Vuex)
conststore=newVuex.Store({
modules:{
user,
order
},
state:{
hasLogin:false,
token:""
},
mutations:{
setHasLogin(state,hasLogin){
state.hasLogin=hasLogin
},
setToken(state,token){
state.token=token
}
}
})
exportdefaultstore
store/user.js
conststate={
name:"sqrtcat",
age:25
}
constmutations={
setUserName(state,name){
state.name=name
},
setUserAge(state,age){
state.age=age
}
}
constactions={
}
constgetters={
}
exportdefault{
state,
mutations,
actions,
getters
}
store/order.js
conststate={
name:"cart",
count:0
}
constmutations={
setOrderName(state,name){
state.name=name
},
setOrderCount(state,count){
state.count=count
}
}
constactions={
}
constgetters={
}
exportdefault{
state,
mutations,
actions,
getters
}
Vue引入
importVuefrom'vue'
importAppfrom'./App'
importstorefrom'./store'
Vue.config.productionTip=false
Vue.prototype.$store=store//注入仓库
constapp=newVue({
store//注入仓库
})
app.$mount()
index.vue
setUserName setUserAge setOrderName setHasLogin setToken {{userName}} {{userAge}} {{orderName}} {{hasLogin}} {{token}} 
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
