Браузер и фронтенд-рантайм
React fiber: свободное припоминание
Припоминание сильнее перечитывания. Для каждого промпта проговорите или запишите полный ответ по памяти, прежде чем открыть эталон — именно усилие припоминания закрепляет механизм.
Восстановите ключевую машину модуля — разделение render/commit, двойную буферизацию fiber, идентичность reconciliation, планировщик lanes, bailout и tearing — не подглядывая в уроки.
- 01Почему render-фазу можно прервать, а commit-фазу — нет?
- 02Что такое двойная буферизация fiber и почему она делает отброшенный рендер бесплатным?
- 03Как reconciliation сводит O(n³) сравнение деревьев к O(n) и какова роль ключей?
- 04Объясните модель lanes и как time-slicing держит ввод отзывчивым.
- 05Что такое bailout, что им управляет и почему inline-объект как проп его срывает?
- 06Что такое tearing, почему его вскрывает только concurrent rendering и как useSyncExternalStore его предотвращает?
Если вы смогли восстановить каждый ответ по памяти, вы держите хребет модуля: render вычисляет диф и может быть приостановлена; commit применяет его атомарно; двойная буферизация делает прерывание бесплатным; эвристики reconciliation плюс ключи привязывают состояние к идентичности; lanes и time-slicing держат срочный ввод впереди дорогой работы; bailout — управляемый референциальной стабильностью через Object.is — пропускает неизменные поддеревья; а useSyncExternalStore не даёт внешним сторам делать tearing. Реконсилер по сути — машина для решения, какие fiber переживут обновление, а какие будут перестроены.