vuex中的store分模块管理,需要在store的index.js中引入各个模块,为了解决不同模块命名冲突的问题,将不同模块的namespaced:true,之后在不同页面中引入getter、actions、mutations时,需要加上所属的模块名
1、声明分模块的store时加上namespaced:true
1 // initial state 2 const state = { 3 userId:'',//用户id 4 userName:'',//用户名称 5 token:'',//token 6 permission:''//权限 7 } 8 9 // getters 10 const getters = { 11 // 获取用户信息 12 getUserInfo(){ 13 return state; 14 } 15 } 16 17 // actions 18 const actions = {} 19 20 // mutations 21 const mutations = { 22 setUserInfo(state,payload) { 23 console.log("payload:"+payload); 24 console.info(payload); 25 state.userId = payload.userId; 26 state.userName = payload.userName; 27 state.token = payload.token; 28 state.permission = payload.permission; 29 } 30 } 31 32 export default { 33 namespaced: true, 34 state, 35 getters, 36 actions, 37 mutations 38 }
2、使用模块中的mutations、getters、actions时候,要加上模块名,例如使用commint执行mutations时
格式:模块名/模块中的mutations
xxx/setUserInfo
1 this.$store.commit("userInfo/setUserInfo",userInfo)
3、获取属性时同样加上模块名
格式:store.state.模块名.模块属性
1 $store.state.userInfo.userName
原文链接:https://blog.csdn.net/fuck487/article/details/83411856