Насколько мне известно, если родительский компонент выполняет повторный рендеринг, то все его дочерние элементы будут повторно выполнять рендеринг, ЕСЛИ они не реализуют shouldComponentUpdate()
. Я привел пример, где это не похоже на правду.
У меня есть 3 компонента: <DynamicParent/>
, <StaticParent/>
и <Child/>
. Компоненты <Parent/>
отвечают за рендеринг <Child/>
, но делают это по-разному.
Функция рендеринга <StaticParent/>
статически объявляет <Child/>
перед исполнением, например:
<StaticParent>
<Child />
</StaticParent>
В то время как <DynamicParent/>
обрабатывает получение и рендеринг <Child/>
динамически во время выполнения, например:
<DynamicParent>
{ this.props.children }
</DynamicParent>
И <DynamicParent/>
, и <StaticParent/>
имеют onClick
слушателей, которые изменяют свое состояние и выполняют повторную визуализацию при нажатии. Я заметил, что при нажатии <StaticParent/>
и он, и <Child/>
перерисовываются. Но когда я нажимаю <DynamicParent/>
, повторно отображаются только родительский объект и НЕ <Child/>
.
<Child/>
- это функциональный компонент без shouldComponentUpdate()
, поэтому я не понимаю, почему он не перерисовывается. Может кто-нибудь объяснить, почему это так? Я не могу найти в документации ничего, связанного с этим вариантом использования.