Когда корневые элементы имеют разные типы, React полностью разбирает старое дерево и строит новое с нуля. Например, преобразование с <div> на <span> или с одного кастомного компонента на другой запускает полную перестройку.
Когда ты сравниваешь два DOM элемента одного типа, React сохраняет базовый DOM узел и обновляет только атрибуты, которые изменились. Например:
<div className="show" title="ReactJS" />
<div className="hide" title="ReactJS" />
React оставляет тот же узел <div>, но обновляет только атрибут className.
Когда компонент обновляется, React сохраняет тот же экземпляр компонента, сохраняя его state между рендерами. React выполняет следующие шаги:
componentWillReceiveProps() и componentWillUpdate()render()Когда обрабатываешь потомков DOM узла, React итерирует по обоим спискам одновременно и генерирует изменения только там, где есть различия. Это работает эффективно, когда добавляешь элементы в конец:
<ul>
<li>first</li>
<li>second</li>
<li>third</li> <!-- newly added -->
</ul>
React поддерживает атрибут key для сопоставления потомков между рендерами. Использование ключей делает преобразования дерева более эффективными, особенно при вставке элементов в начало:
<li key="2014">Connecticut</li> <!-- new item -->
<li key="2015">Duke</li>
<li key="2016">Villanova</li>
Ключи помогают React определить, какие элементы изменились, улучшая производительность.
Когда React сравнивает два элемента DOM разных типов, например преобразует <div> в <span>, он полностью разбирает старое дерево и строит новое с нуля.
Новый — ещё не проверен сообществом
Вы