@zlodiak

Как запушить в свойство стейта?

Я написал форму, которая отправляет в глобальный стейт своё содержимое. Редюсер выглядит так:

const messagesReducer = function messagesReducer(state = { messages: [] }, action) {
    switch(action.type) {
        case 'SET_MESSAGE': {
            // state = {
            //     ...state,
            //     messages: state.messages.push(action.payload),
            // };
            state.messages.push(action.payload);
            break;
        }
        default:
            return state;
    }
    return state;
}


Он срабатывает без проблем. Проблемы начинаются когда я пытаюсь пуш при помощи spread-оператора. Для этого в коде выше я убираю комметарии с нескольких строк кода. В этом случае я получаю такое сообщение об ошибке:
Uncaught TypeError: state.messages.push is not a function


Подскажите пожалуйста как всё таки заполнить стейт при помощи spread-оператора.

LIVE DEMO здесь.

Структура стейта такая:
5f80ea7472aff537735603.png
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
0xD34F
@0xD34F
case 'SET_MESSAGE': {
  return {
    ...state,
    messages: [ ...state.messages, action.payload ],
  },
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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