Невозможно отправить действие без мутации

#javascript #function #vue.js #vue-component #vuex

#javascript #функция #vue.js #vue-компонент #vuex

Вопрос:

Я не могу отправить действие с помощью vuex без совершения мутации.

Я импортировал обычные mapActions и т. Д. как всегда (имейте в виду, что все работает правильно, я могу выполнять мутации, геттеры, получать свое состояние с помощью mapMutations, mapActions и т. Д., Я даже могу отправлять действия, ЕСЛИ я включаю фиксацию).

Для самой простой вещи я создал действие в своем выделенном store/actions.js .

 repeatWord(data) {
console.log(data)
}
 

в моем компоненте vue я определил его следующим образом:

 methods: {
...mapActions({
repeatWord: 'repeatWord'
)}
 

и я вызываю это через:

 this.repeatWord('test')
 

Должно сработать, верно? Ну, это не так.
То, что я получаю в консоли, это {getters: {…}, состояние: {…}, rootGetters: {…}, отправка: f, фиксация: f, …}

Чего мне здесь не хватает?

Ответ №1:

Из документации:

Обработчики действий получают объект контекста, который предоставляет тот же набор методов / свойств в экземпляре хранилища

Это входит в качестве первого аргумента. Второй аргумент — это ваши переданные данные. Итак, определите свое действие следующим образом:

 repeatWord(context, data) {
   console.log(data)
}
 

Часто вы увидите, что context аргумент деструктурирован как:

 repeatWord({ commit, dispatch }, data) {
   console.log(data)
}