Редуктор редуктора: добавление объекта в массив при возврате нового состояния - PullRequest
0 голосов
/ 09 ноября 2018

Я новичок в Redux и пытаюсь избежать неправильного поведения.

Я использую Redux-Thunk. У меня есть функция, которая делает вызов API и в зависимости от того, есть ли ошибка или нет, она отправляет: fetchUserOK (данные) или fetchUserErr (данные)

В моем файле редуктора, когда я переключаюсь, если регистр

FETCH_USER_OK Я делаю:

return action.payload;

FETCH_USER_ERR Я делаю:

return [...state, { error: action.payload }];

Я думаю, что return action.payload; Это нормально, и мне не нужно распространять предыдущее состояние. Пожалуйста, поправьте меня, если я ошибаюсь. Но я понятия не имею, правильно ли то, что я делаю из-за ошибки:

return [...state, { error: action.payload }];

Полезная нагрузка для OK будет выглядеть как

[{id: 1, name: "Peter"}, {id: 2, name: "Kevin"}, {id: 3, name: "Paul"}]

Полезная нагрузка для ERR: строка

404

Должен ли я вернуть штат (... state)? Должен ли я заключить между {} ключ: значение?

Буду признателен за совет. Я пытаюсь избежать плохих практик.

1 Ответ

0 голосов
/ 09 ноября 2018

По сути, редуктор возвращает состояние обновления, когда вы делаете {...state, anyfield: action.payload}, когда вы фактически обновляете состояние, это означает, что все поля копируются из состояния и заменяются все поля после первого ,. Рекомендуется всегда обновлять ваше состояние с помощью шаблонов неизменяемого обновления , вместо того, чтобы делать state.somefield = value с последующим return state.

Итак, чтобы ответить на ваш вопрос. Из того, что я понял, ваш редуктор ДОЛЖЕН всегда возвращать состояние обновления, поэтому возвращение только action.payload не является правильным способом сделать это. Вы всегда должны добавлять существующее состояние ... state.

[UPDATE]

Вы можете прочитать эту статью. Он расскажет вам о цикле редукса. Какой бы возврат из редуктора не заменил предыдущее состояние приложения, так что вы всегда хотите вернуть обновленное состояние, будут все поля, а не просто полезная нагрузка действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...