El día 5
Nikita Nikler
10 diciembre 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 деревьев.

Les gusta? Cuéntale a tus amigos!
Comentar
Ir a la grabación en la cinta de opciones
El objetivo de

Puede publicar
su objetivo aquí

Podemos ayudarle a lograrlo!

310 000

ideas afines

instrumentos

para un logro emocionante

Únete a nosotros
Registración

Las posibilidades
están ilimitadas.
Es la hora
de descubrir las suyas

Уже зарегистрированы?
Entrada al sitio

Entre.
Está abierto.

¿Aún no está registrado?
 
Conéctese a cualquiera de sus cuentas, sus datos se tomarán de la cuenta.
¿Ha olvidado la contraseña?