@DiseaseC

Vue/Vuex — Как правильно изменить состояние компонента в мутациях?

Мне требуется с помощью vue и vuex распарсить API
Есть запрос из компонента:
this.$store.dispatch('FETCH_STORIES');
Действие:
FETCH_STORIES: ({ commit }) => {
        axios.get("http://hn.algolia.com/api/v1/search?tags=front_page")
            .then(response => {
                let result = response.data;
                commit("APPEND_STORY", result);
            })
},

Мутация:
APPEND_STORY: (state, article) => {
        state.stories.push(article);
    },

Хранилище выглядит так:
state: {
    stories: [],
}

Из-за метода push в мутациях, данные в шаблон попадали завёрнутыми в массив (внутри был только один элемент), и чтобы получить доступ к данным приходилось пробегаться по массиву циклом. Мне необходимо от этого цикла избавиться, а значит, надо избавиться и от массива, и от метода push.
Пытаюсь как-то так, но данные не приходят
APPEND_STORY: (state, payload) => {
        state.stories = payload;
    },

Как можно это исправить?
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
Fragster
@Fragster
помогло? отметь решением!
Для избавления от цикла можно сделать вместо массива объект или map с ключом id. Почему в сторе лажа - надо смотреть код. Мутация в целом правильная.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы