День 5
Nikita Nikler
10 грудня 2024, 13:49

Хочу внести немного ясности в терминологию Fiber ,которую использовал в размышлениях ниже.

Я использовал такие термины как FiberNode, ReactFiber, CurrentFiberTree, WorkInProgressTree и FiberTree. Все они на самом деле с точки зрения реализации представляют один объект с типом Fiber. В исходниках реакта есть несколько функций ,которые по-разному могут создавать этот Fiber ,но по итогу мы имеем дело всегда с объектом типа Fiber. Поэтому в будущем я буду корректно обзывать их Fiber без каких-либо префиксов и суффиксов ,которые могут запутать в понимании.

Дерево Fiber также представляет собой объект Fiber ,содержащий указатели на другие Fiber ,которые тоже могут быть деревьями ,а могут быть конечными узлами без детей и соседей.

Кроме этого существует такая сущность как FiberRoot. Она существует в приложении в единственном экземпляре ,содержит более расширенный набор свойств и несет немного другую функциональность.

FiberRoot создается при вызове React.createRoot и содержит ссылки на текущее дерево Fiber и рабочее (workInProgressTree). Он также содержит ссылку на контейнер приложения - элемент ,в который мы монтируем наше приложение при вызове render.

FIber же создается для конкретного ReactElement или ReactNode. В то время как Fiber управляет состоянием конкретно ReactNode ,FiberRoot управляет всем деревом приложения Fiber ,начиная от самого верхнего.

Основные функции FiberRoot:

  • Планирование работы через React Scheduler
  • Хранение деревьев Fiber current и workInProgress
  • Переключение ссылок current и workInProgress

Можно обобщить ,что FiberRoot координирует работу Fiber деревьев.

Подобається? Розкажіть друзям!
Коментувати
Перейти до запису в стрічці
Мета

Вы тоже можете
опубликовать свою
цель здесь

Мы поможем вам ее достичь!

310 000

единомышленников

инструменты

для увлекательного достижения

Присоединиться
Реєстрація

Можливості
безмежні.
Настав час
відкрити свої.

Уже зарегистрированы?
Вхід на сайт

Заходьте.
Відкрито.

Ще не зареєстровані?
 
Підключіться до будь-якого з ваших акаунтів, ваші дані будуть взяті з акаунту.
Забули пароль?