Верните новый объект состояния с users из payload и loading:false. В обычном reducer нельзя мутировать state или выполнять сетевую загрузку; он только вычисляет новое состояние.
Как добавить reducer для пользователей в Redux Store?
Верните новый объект состояния с users из payload и loading:false. В обычном reducer нельзя мутировать state или выполнять сетевую загрузку; он только вычисляет новое состояние.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Учебное состояние Redux имеет форму {users: [], loading: false}. Действие {type:'users/received', payload:[{id:1,name:'A'}]} должно заменить список и завершить загрузку. Reducer пишется без Redux Toolkit и Immer. Как реализовать переход?
Ответ
Верните новый объект состояния с users из payload и loading:false. В обычном reducer нельзя мутировать state или выполнять сетевую загрузку; он только вычисляет новое состояние.
const initial = {users: [], loading: false};
function reducer(state = initial, action) {
if (action.type === 'users/received') {
return {...state, users: [...action.payload], loading: false};
}
return state;
}
Контракт предполагает валидный массив payload. Запрос выполняется вне reducer, затем отправляется действие результата. В большом Store users может быть отдельным slice; наличие такого reducer определяется конфигурацией проекта, а не самим фактом использования Store.