Vuex: Как проверить, существует ли действие перед его отправкой? - PullRequest
0 голосов
/ 16 марта 2019

Я получаю эту ошибку: «Неизвестный тип локального действия ...», когда я отправляю свое действие, которое происходит в других модулях.Действие, которое я рассылаю, в некоторых случаях не существует.Итак, мне нужно применить условие, которое проверит, существует ли это действие, и отправит действие, только если условие выполнено.Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

У меня такая же проблема, и вот как я ее решил:

const methodName = MODULE_NAME + "/" + ACTION_NAME
const actionExists = Object.keys(window.Store._actions).findIndex(key => key === methodName) !== -1

if (actionExists) {
  console.log(methodName + ' exists!')
} else {
  console.log(methodName + ' doesn\'t exists!')
}
0 голосов
/ 16 марта 2019

Единственный случай, когда я могу вспомнить, что действие существует только в некоторых случаях, это когда вы используете vuex registerModule .

Если это так, то вы можете добавить Booleanсвойство, указывающее, что модуль зарегистрирован или нет.Итак, в вашем компоненте:

const myModule = () => import('module-path.js')

export default {
  data: () => ({
    isModuleRegistered: false
  }),
  created() {
    myModule.then(module => {
      this.isModuleRegistered = true
      this.$store.registerModule('myModule', module)
      this.$store.dispatch('myModule/someAction')
    })
  },
  beforeDestroy () {
    // If you want to unregister it when component gets destroyed
    this.isModuleRegistered && this.$store.unregisterModule('myModule')
  }
}

Если приведенный выше фрагмент не отвечает на ваш вопрос или не соответствует вашим потребностям: вы должны установить логическое свойство при регистрации модуля.И затем проверьте это логическое значение, чтобы увидеть, зарегистрирован модуль или нет.Вы также должны изменить это логическое значение, когда модуль становится незарегистрированным.

Примечание , что выше, я только что загрузил модуль vuex.Если вы хотите лениво загрузить свои модули vuex, прочитайте эту замечательную статью , чтобы узнать больше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...