Задать вопрос

Не вызывается getter после mutation?

После перехода на страницу и нажатию кнопки не срабатывает getter, вызываемый на страницу через computed свойство.
Хотя после перезагрузки страницы все работает. В чем может быть проблема ?
Ставил консоль после мутации, данные записывает новые, так как происходит переключение языка.
export const state = () => {
  items: []
};

export const getters = {
  getMenuItems: state => state.items
};

export const mutations = {
  setMenu(state, items) {
    state.items = items;
  }
};

export const actions = {
  async getMenu({rootState, commit}) {
    const { auth, lang } = rootState;
    
    const {items} = await this.$axios.$get(`/api/${ lang.locale }/menu`, {
      headers: {
        'Authorization': `bearer ${auth.token}`,
        'Accept-Language': `${lang.locale}`
      },
    });

    if (items) {
      // set items
      commit('setMenu', items);
    }
  }
};
```
```
    computed: {
      ...mapGetters({menuItems: 'menu/getMenuItems'}),
    },
    watch: {
      menuItems: function (newValue, oldValue) {
        console.log(newValue); // это сообщение не выводится в описанном случае
      }
    }
  • Вопрос задан
  • 154 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
RazerVG
@RazerVG Автор вопроса
FrontEnd
Нашел свою ошибку,

export const state = () => {
  items: []
};

забыл обернуть скобочками.
export const state = () => ({
  items: []
});


Странно что оно работало после перезагрузки страницы.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Kozack
@Kozack Куратор тега Vue.js
Thinking about a11y
Возможно где-то сломали реактивность. Попробуйте изменять данные через Vue.set
Ответ написан
Ваш ответ на вопрос

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

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