Advance Flashcards
Что такое сверка (reconciliation)?
Это алгоритм React, используемый для того, чтобы отличить одно дерево элементов от другого для определения частей, которые нужно будет заменить
Какие эвристики используются в React при сверке деревьев?
- Два разных типа элементов (div, a, …) порождают разные деревья
- Разработчик может подсказать какие зависимые элементы не нуждаются в перерисовке при помощи пропса key
Такие эвристики позволяют проводить O(n) операций сравнения для n элементов в дереве.
Как React отрабатывает при изменении типа корневого элемента?
Пример: span -> div
Если тип корневого узла изменился, реакт удаляет всё нижележащее дерево и создаёт его заново для нового типа. Состояния, хранившиеся в старом дереве, удаляются.
Зачем нужен пропс key?
Ключи нужны для того чтобы реакт различал и лишний раз не обновлял зависимые элементы если их много.
Ключи также делают изменение порядка элементов или вставку новых элементов гораздо более дешёвыми.
Какие проблемы может вызвать использование порядковых индексов в качестве ключей?
Порядок данных в исходном массиве может поменяться, но реакт об этом ничего не узнает, и запишет данные по старым индексам-ключам.
В результате, данные могут смещаться в соседние элементы при вставке/удалении или изменении порядка данных в массив.
Что такое virtual DOM?
Это концепция в которой идеальное (виртуальное) представление UI всегда хранится в памяти и синхронизируется с настоящей DOM с помощью библиотеки (такой как ReactDOM).
Что такое virtual DOM? Как он реализован в реакте (в общих чертах)? Что он даёт?
Это концепция в которой идеальное (виртуальное) представление UI всегда хранится в памяти и синхронизируется с настоящей DOM с помощью библиотеки (такой как ReactDOM).
В реакте, виртуальный дом - это объекты элементов. Реакт также хранит дополнительную информацию о дереве объектов в специальных объектах - fibers.
Виртуальный DOM создаёт абстракцию над управлением атрибутами и ручным управлением DOM’ом. Он обеспечивает декларативность API реакта, позволяя описывать желаемые состояния UI.
Что такое чистый компонент (pureComponent)?
Как создать чистый функциональный компонент?
Чистый компонент поверхностно сравнивает новые пропсы с предыдущими, и при отсутствии изменений не запускает render, а переиспользует результат предыдущего рендера.
Чистый функциональный компонент можно создать используя HOC React.memo(component, equalityCheck)