Как остановить поток Redux при отправке действия - PullRequest
1 голос
/ 11 февраля 2020

Таким образом, для каждого отправленного действия в redux будет вызываться рендеринг каждого компонента, и эти компоненты сравниваются с ранее отображаемым компонентом. Любая разница идентифицируется и обновляется.

У меня вопрос, есть ли способ остановить вызов обновления (рендеринга) ненужных компонентов?

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

1 Ответ

1 голос
/ 11 февраля 2020

Если часть выбранного вами магазина (в mapStateToProps) не изменилась (с помощью поверхностного сравнения ===), то ваш компонент не будет перерисован.

Это подробно описано в документации

React Redux внутренне реализует метод shouldComponentUpdate, так что компонент-оболочка выполняет рендеринг точно, когда данные, необходимые для вашего компонента, имеют изменилось. По умолчанию React Redux решает, отличается ли содержимое объекта, возвращаемого из mapStateToProps, с помощью сравнения === (проверка "неглубокого равенства") для каждого поля возвращаемого объекта. Если какое-либо из полей изменилось, ваш компонент будет перерисован, чтобы он мог получать обновленные значения в качестве реквизита.

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

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