@nvdfxx
Senior Pomidor developer

Почему не вызывается действие?

Метод в компоненте:

setCategory(cat) {
            this.$store.dispatch('setCategory', cat)
            console.log(this.$store.getters.getCategory) // -> 'abc'
        }

Стор:

const state = {
    category: 'abc'
  }

  const mutations = {
    SET_CATEGORY (state, payload) {
      state.category = payload
    }
  }

  const actions = {
    setCategory ({ commit }, payload) {
      console.log(payload) // nothing
      commit('SET_CATEGORY', payload)
    }
  }

  const getters = {
    getCategory: state => state.category
  }

  export default {
    state,
    mutations,
    actions,
    getters
  }

Геттер выводит 'abc' в консоль, но dispatch просто не отрабатывает и ошибок не выдает. В чем проблема?
  • Вопрос задан
  • 313 просмотров
Решения вопроса 2
0xD34F
@0xD34F
console.log(this.$store) - этот экшн видит
spoiler
5c6526665ea4f007374285.png

На что стоит обратить внимание - наличие в сторе таких свойств, как originalCommit / originalDispatch. Надо полагать, какой-то плагин взял, да и подменил настоящие commit и dispatch (сохранив при этом ссылки исходные методы), и что там происходит в новых методах, почему не вызывается действие... Честно говоря, не очень интересно. Попробуйте воспользоваться исходным методом: this.$store.originalDispatch('setCategory', cat).
Ответ написан
@nvdfxx Автор вопроса
Senior Pomidor developer
Проблему создавал electron со своим плагином vuex-electron, чтобы решить проблему необходимо удалить строку createSharedMutations() в плагинах в index файле стора
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@bagzon
Backend PHP, NodeJs, JS
Не понимаю в чем проблема, создай нормально стор, скорее всего проблема в инициализации.
https://jsfiddle.net/3ugcmsdh/ вот мой варик с твоим кодом работает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы