vuex, store中的两个模块中的 。有相同的方法时。 又要在一个页面调用,同时用展开时就会出问题。
- a 模块中的 getName()
- b 模块中的 getName()
// mapGeter 直接获得全局注册的getters
…mapGetters(“a”,[“localJobTitle”]),
…mapGetters(“b”,[“localJobTitle”]),
只能输出最后一次调用的。 即B的结果, 要是能指定别名就好了。
解决方式:
…mapGetters(“shopcar”,{ othershopcar:’localJobTitle’} )
如上面的方试调用, 即可解决。
或者: 写成传统方式:
localJobTitle1() {
return this.$store.getters[“login/localJobTitle”]+ “self”
}
其它 备忘:
// 和没有modules的时候一样,同样的方式dispatch action
changeName() {
this.$store.dispatch(“login/changeEagle”, “eagle11111”)
},
转载一个应用参考例子:
const moduleA = { namespaced: true, state: { moduleAData: 'a' }, getters:{ moduleAData: state => state.moduleAData, }, mutations: { SET_DATA_A: (state, payload) => { state.moduleAData = payload } }, actions: { setData({ commit }, payload) { console.log('a') commit('SET_DATA_A', payload) } } } const demoB = { namespaced: true, state: { b: 'b' }, getters:{ dataB: state => state.b, }, mutations: { SET_DATA_B: (state, payload) => { state.b = payload } }, actions: { setDatab({ commit }, payload) { console.log('b') commit('SET_DATA_B', payload) }, someAction:{ // root:true, handler({commit},payload){ commit('SET_DATA_B',payload) } } } } export default new Vuex.Store({ modules:{ a: moduleA, b:moduleB } }) 使用 getter ...mapGetters('a',['moduleAData']), ...mapGetters('b',['moduleBData']), 或者 ...mapGetters('a',{ss:'moduleAData'}), ...mapGetters('b',{bdata:'dataB'}) action ...mapActions(['a/setData','namespace/action']), this['a/setData']('sdsds') 或者 this.$store.dispatch('a/setData','sdsds') 或者 ...mapActions('a',{ 'aaa':'setData' }), this.aaa('新的a数据') 或者 ...mapActions('a',['setData']), ...mapActions('b',['setDatab']), this.setData('新的a数据')