Никола Ланцони Проблема, о которой вы говорили, была совершенно другой. Сначала я дам некоторую ссылку.

Когда React необходимо отобразить родительский компонент (в вашем случае компонент App), он вызовет метод shouldComponentUpdate() каждого дочернего компонента (ChildComponent в вашем случае). Если shouldComponentUpate() вернет true, будет отображаться дочерний компонент.

По умолчанию компоненты, унаследованные от React.Component, ВСЕГДА возвращают true для shouldComponentUpdate(), поэтому всегда повторно визуализируются. Вот почему вы видите, что <ChildComponent/> всегда отображается повторно. Чтобы решить эту проблему, у вас есть два варианта:

  • В вашем ChildComponent переопределите shouldComponentUpdate() и выполните неглубокое сравнение между текущими и следующими реквизитами и верните false, если реквизиты не изменились.
  • Наследуйте от React.PureComponent, который выполнит поверхностное сравнение за вас.

В этой истории я говорил следующее:

Если вы привяжете обработчик событий в render() (неправильный способ), даже если ваш компонент унаследован от PureComponent, он будет без необходимости повторно отображаться из-за изменения привязки.

Вот почему нам нужно использовать функцию стрелки или, как сказано в комментариях, автоматическую привязку.