Успешно выстрелил два крючка useReducer подряд - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть ловушка 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 Ответ

0 голосов
/ 09 февраля 2019

Вы отменяете состояние.

Вместо return { a: action.payload }; используйте:

return { ...state, a: action.payload };

То же самое для другого случая

...