Успешно выстрелил два крючка useReducer подряд
У меня есть крючок Редуктор
const [state, dispatch] = React.useReducer(reducer, initialState);
У этого есть два случая, которые устанавливают строку в состоянии
function reducer(state, action) {
switch (action.type) {
case 'ONE':
return { a: action.payload };
case 'TWO':
return { b: action.payload };
default:
throw new Error('You have probably mispelt the action name');
}
}
Если я вызываю dispatch два раза подряд, то регистрируется только последний вызов, как это было бы с состоянием набора компонентов.
dispatch({ type: 'ONE', payload: 'some string' });
dispatch({ type: 'TWO', payload: 'some other string' });
Как я могу получить оба регистрационных звонка для регистрации, а не только последний?
1 ответ
Решение
Вы переопределяете состояние.
Вместо того чтобы делать return { a: action.payload };
, используйте:
return { ...state, a: action.payload };
То же самое для другого случая