Vuex: ссылка на переменную modules внутри действия - PullRequest
1 голос
/ 04 марта 2020

В моем приложении Vue есть следующее глобальное хранилище:

// N.B. These Stores Are Modularised, please reference: [https://vuex.vuejs.org/guide/modules.html] for details.
const store = new Vuex.Store({
  modules: {
    surfers: surfers,
    surfSites: surfSites,
    surfTickets: surfTickets
  },
  actions: {
    resetAllState: ({ dispatch, modules }) => {
      console.log(modules); // Undefined
      console.log(store.modules); // Undefined
      console.log(this.modules); // Error in v-on handler: "TypeError: _this is undefined"
      for (const currentModule in modules) {
        console.log(`Resetting Module State: ${module}`);
        if (modules[currentModule].state.hasOwnProperty("initialState")) {
          dispatch("resetModuleState", currentModule);
        }
      }
    },
    resetModuleState: (currentModule) => {
      console.log(`Resetting Module State: ${currentModule}`);
    }
  }
});

Моя цель состоит в том, чтобы действия циклически проходили через модули и отправляли действие состояния сброса, которое я вызываю, когда выйти из системы текущего пользователя.

Тем не менее, modules не определено, store.modules и this.modules все не определены или связаны с неопределенной связанной ошибкой ...

Итак, как мне go получить доступ к модулям динамически таким образом, если вообще возможно?

1 Ответ

2 голосов
/ 04 марта 2020

Приведенный выше код имеет проблему, действия могут иметь доступ только к

{ commit, dispatch, getters } as params

, но вы пытались передать модули в параметрах, но все же вы можете получить доступ к модулям при подходе ниже

используйте этот код внутри действия "resetAllState"

resetAllState: function ({ dispatch }) {
  for (const currentModule in modules) {
    this._modules.root.forEachChild((childModule) => {
      console.log(childModule);
    });
    //if (modules[currentModule].state.hasOwnProperty("initialState")) {
    //  dispatch("resetModuleState", currentModule);
    //}
  }
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...