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

Все редукторы будут вызываться, когда будет отправлено действие?

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

Или я не совсем понимаю принцип дизайна сокращения?

4b9b3361

Ответ 1

Да, это правильно.

Однако один из вариантов, который вы должны оптимизировать для этого поведения (рекомендуется из документов Redux), заключается в использовании 'reselect' https://github.com/rackt/reselect

Reselect в основном позволяет создавать memoized селекторов, посредством чего вы можете сказать, что реквизит A зависит от состояния B и состояния C, и поэтому только перекомпоновать реквизиты A, если изменяется состояние B или состояние C.

Обратите внимание, что это все равно вызовет запуск всех редукторов (и пройдите через оператор switch, чтобы увидеть, может ли к ним применить действие). Я полагаю, что этого поведения нет. Однако использование повторного выбора означает, что ваш компонент верхнего уровня получит только изменение prop/state, если произошли фактические изменения, которые влияют на это состояние, вместо того, чтобы каждый раз запускать изменение и заставлять React повторно отображать все, даже если это изменение не повлияло потому что это было где-то не связанным. (Readme в reselect объясняет лучше)

Ответ 2

Да - все редукторы будут вызваны при отправке действия. Вы получите один хороший побочный эффект. Поскольку каждый редуктор возвращает состояние по умолчанию, если действие не найдено, вы получаете свое начальное состояние с помощью одного действия.

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

Когда вы добавляете повторно выбранный текст, как показано на рисунке, вы можете получить много болевых результатов!

Мой текущий стек:

  • Redux для состояния, управления действиями
  • Повторно выберите для слоя преобразования данных
  • Реагировать на представления

Добавление повторной выборки к рабочему потоку и обеспечение ее работы вместе с редукторами было лучшим, что случилось со мной на прошлой неделе.