Как выполнить Vuex-состояние с помощью геттера внутри модуля из другого модуля - PullRequest
1 голос
/ 14 апреля 2019

Я создаю приложение в VueJS, однако модули Vuex доставляют мне некоторые проблемы.

Что бы я ни пытался, я не могу получить состояние в модуле при вызове его из другого модуля.

В моих добытчиках Vue Devtools Vuex: modA / mycustomer: не определено

Я прочитал всю документацию на веб-сайте Vuex и попробовал некоторые решения, уже приведенные в stackoverflow, но я заблудился. Вероятно, с видом на что-то

my store.js

  export default new Vuex.Store({
    modules: {
      modA: moduleA,
      modB: moduleB
    }
  })

модуль A JS

  export default {
    namespaced: true,
    state:{
       customerId:0
    },
    getters: {
       customerId: state => {
          return state.customerId
       }      
    }
  }

moduleB.js

   export default {
     namespaced: true,
     state:{
       orderId:0
    },
     getters: {
       orderId: state => {
          return state.orderId
       },
       mycustomer: rootGetters => {
          return rootGetters['modA/customerId']
       }
     }
  }

Обычно я ожидаю получить идентификатор клиента с этим запросом. Но есть только неопределенные Некоторые состояния необходимы для всех модулей.

1 Ответ

1 голос
/ 14 апреля 2019

Соответствующей документацией является Доступ к глобальным активам в модулях пространства имен , где говорится:

Если вы хотите использовать глобальные состояния и методы получения, rootState и rootGettersпередается в качестве 3-го и 4-го аргументов функциям-получателям , а также предоставляется в качестве свойств объекта контекста, передаваемого в функции действий.

Так что если вы хотите получить доступ к customerIdгеттер модуля modA внутри геттера mycustomer в модуле modB, он должен быть:

mycustomer(state, getters, rootState, rootGetters) {
  return rootGetters['modA/customerId']
}
...