Как дождаться окончания Saga перед вызовом mapDispatchToProps

Я создал свой собственный нормализатор, и он работает в саге, которая put действие загрузки для каждой модели. Например, он может отправить нагрузку для сообщений, а затем отправить нагрузку для комментариев.

Моя проблема заключается в том, что в тот момент, когда я отправляюсь для загрузки сообщений, connect запускает mapStateToProps и перерисовывает мои компоненты.

Я хочу, чтобы он подождал, пока я выполню все свои действия по загрузке (т. Е. Оба сообщения и комментарии), прежде чем connect запустит mapStateToProps и перезапустит мой компонент.

1 ответ

Решение

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

Одно действие, и для этого один повторный рендеринг.

Крис Казинс также дал отличное решение для каждого компонента, которое заключается в использовании componentWillReceiveProps (или shouldComponentUpdate) и возврате false, пока компонент не получит необходимые данные. [хотя при нормализации это потребовало бы много дополнительного состояния, чтобы отслеживать устаревшие данные или нет]

Другие вопросы по тегам