Day, 5
Nikita Nikler
10 December 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 деревьев.

Like it? Share with friends!
Add comment
See in dairy
Goal

You can publish
your goal here

We can help you achieve it!

310 000

like-minded

tools

for an exciting achievement

Join us!
Sign up

Signup

Уже зарегистрированы?
Quick sign-up through social networks.
Sign in

Sign in.
Allowed.

Not registered yet?
 
Log in through social networks
Forgot your password?