Подтвердить что ты не робот

Как определить порядок выполнения редукторов в Redux?

Предположим, что у меня есть действие A, которое отправляется на редуктор R1 и R2. У меня также есть интеллектуальный компонент C, который connect ed соответствует состояниям, возвращаемым R1 и R2

Возможно ли, что компонент C был перезагружен при выполнении R1, но до выполнения R2?

Как, если я хочу перезагрузить C только тогда, когда выполняются как R1, так и R2? Или можно сообщить Redux dispatcher сначала отправить действие на R2?

* R1 - это фактически состояние results, возвращаемое редуксом normalizr, а R2 - состояние entities. entities необходимы для денормализации results

4b9b3361

Ответ 1

Возможно ли, что компонент C был отменен, когда выполняется R1, но до выполнения R2?

Нет, это невозможно, если вы используете один магазин, например, предлагаемые документами Redux.

В Redux вы комбинируете редукторы с combineReducers(). Это означает, что с точки зрения Reduxs существует только один редуктор, и он является синхронным. Конечно, он называет ваши два редуктора, но магазин Redux только начинает уведомлять подписчиков после того, как он получает новое значение состояния из своего корневого редуктора, поэтому гарантируется, что все ваши редукторы уже были выполнены к моменту представления просмотров.

Ответ 2

Действия Redux отправляются синхронно, поэтому все побочные эффекты действия будут выполняться сразу же после отправки действия. Это означает, что ваш компонент будет только повторно рендерить один раз, так как React не будет повторно отображать сразу при изменении состояния (кажется, вместо этого отложить до следующего цикла событий или кадра анимации), даже если вы вызываете setState несколько раз.

Вы можете определить порядок отправки, просто изменив порядок, который вы вызываете store.dispatch. Сначала вызовите R1.dispatch, если вы хотите, чтобы все побочные эффекты R1 менялись в первую очередь.