Как перехватить недопустимые типы действий в redux

#redux

#redux

Вопрос:

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

Редактировать: я использую несколько редукторов с combineReducers.

Ответ №1:

Всегда будет существовать по крайней мере один необработанный тип действия: INIT. В режиме разработки redux отправляет действие со случайным типом, а также вне режима разработки вы не должны выполнять это действие (именно по этой причине оно является случайным в режиме разработки).

Действительно: можно отправлять действия, которые не обрабатываются редукторами (пока). Действия должны описывать то, что происходит в вашем приложении, а не обязательно восприниматься как «вызов изменения состояния».

Но добавим к этому: если вы пишете modern redux, то также довольно редко случается, что это происходит случайно. Возможно, вы захотите изучить modern redux с помощью redux toolkit — последняя ссылка — хорошее начало, а официальный учебник redux essentials станет хорошим местом для изучения современных шаблонов redux. Также взгляните на руководство по стилю redux.

Ответ №2:

Да, это возможно. Вы можете выдать ошибку, если ни один тип действия не соответствует.

Используйте это в конце функции reducer . (но не устанавливайте тип по умолчанию)

 throw new Error("Action not matched");
 

Комментарии:

1. Это не сработает при использовании нескольких редукторов с combineReducers, потому что один редуктор выдаст эту ошибку, даже если другой редуктор обработает это действие.