@ascold2013

Как вызвать метод в компоненте vue после получении данных из vuex?

Здравствуйте!
Такая проблема - в корневом компоненте App вызывается асинхронный метод - запрос данных на сервер. Данные хранятся в vuex хранилище. И нужно выполнить метод тогда, когда эти данные будут получены. Данные получаю в компонент через mapGetters из vuex.
И нужно узнать - если данные есть - вызвать.
Я сделал так:
watch: {
      currentUser: function(user){ //currentUser - computed свойство, получаемое из vuex
        console.log('get previews for user:', user);
        this.getPreviewsForUser(user.token) //нужно вызвать, если currentUser есть
      },
  },

Но оно не работает. Только перезагружать страницу, чтобы заново грузился currentUser
  • Вопрос задан
  • 389 просмотров
Пригласить эксперта
Ответы на вопрос 2
@deliro
Сравнивай user с undefined, null или что там у тебя.
Ответ написан
@vadimek
Полуджун
Поздно, конечно, но мне кажется, можно так:
в action Vuex запрашивать данные, и там же выполнять следующий метод
actions = {
  async getUser({ commit }) {
    const { data } = await axios.get('http://...');
    if (data.user) {
      commit(SET_USER, data.user);
      dispatch('getPreviewsForUser', data.user.token)
    } else {
      ...
    }
    
    return data;
  },
  getPreviewsForUser({commit}, token)  { //либо можно через state токен получать;
    ...
  }
};
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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