awesome-everything EN
↑ Обратно к восхождению

Браузер и фронтенд-рантайм

React fiber: свободное припоминание

Суть Промпты на свободное припоминание по всему модулю fiber. Сначала ответьте своими словами, затем раскройте эталонный ответ и сравните.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 14 min

Припоминание сильнее перечитывания. Для каждого промпта проговорите или запишите полный ответ по памяти, прежде чем открыть эталон — именно усилие припоминания закрепляет механизм.

Цель

Восстановите ключевую машину модуля — разделение render/commit, двойную буферизацию fiber, идентичность reconciliation, планировщик lanes, bailout и tearing — не подглядывая в уроки.

Вспомните перед уходом
  1. 01
    Почему render-фазу можно прервать, а commit-фазу — нет?
  2. 02
    Что такое двойная буферизация fiber и почему она делает отброшенный рендер бесплатным?
  3. 03
    Как reconciliation сводит O(n³) сравнение деревьев к O(n) и какова роль ключей?
  4. 04
    Объясните модель lanes и как time-slicing держит ввод отзывчивым.
  5. 05
    Что такое bailout, что им управляет и почему inline-объект как проп его срывает?
  6. 06
    Что такое tearing, почему его вскрывает только concurrent rendering и как useSyncExternalStore его предотвращает?
Итог

Если вы смогли восстановить каждый ответ по памяти, вы держите хребет модуля: render вычисляет диф и может быть приостановлена; commit применяет его атомарно; двойная буферизация делает прерывание бесплатным; эвристики reconciliation плюс ключи привязывают состояние к идентичности; lanes и time-slicing держат срочный ввод впереди дорогой работы; bailout — управляемый референциальной стабильностью через Object.is — пропускает неизменные поддеревья; а useSyncExternalStore не даёт внешним сторам делать tearing. Реконсилер по сути — машина для решения, какие fiber переживут обновление, а какие будут перестроены.

Продолжить восхождение ↑React fiber: чтение кода
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.