Advance Flashcards
(8 cards)
Что такое сверка (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)