React не знает, что компоненту не нужно повторно отображать дочерний компонент при изменении состояния.Вместо этого он ошибается из-за осторожности и перерисовывает все, что находится ниже компонента, где произошло изменение состояния.Чтобы сообщить React, что ваш компонент не должен повторно выполнять рендеринг, когда это происходит, вы должны использовать shouldComponentUpdate или React.PureComponent .PureComponent
полезно, если вы управляете своим состоянием / поддерживает неизменный путь, тогда как shouldComponentUpdate
допускает более настраиваемую логику.
Я бы рекомендовал сравнивать различные методы и использовать эти оптимизации только в том случае, если вы видите измеримую разницув исполнении.React обычно довольно быстр при рендеринге и фактически не меняет DOM, если в этом нет необходимости.Если ваши render
функции работают медленно, я бы порекомендовал изучить, что делает их медленными и оптимизировать их.
Здесь - это пример, который использует PureComponent
, чтобы избежать повторного рендеринга.Следите за журналами консоли, чтобы увидеть разницу между двумя дочерними компонентами.