@Exploring

Как реакт хуки определяют к какому компоненту относятся?

Изучаю реакт и не дает покоя вопрос: как useEffect или кастомные хуки понимают, к какому компоненту относятся и какой компонент нужно перерисовать при изменении стейта? Если хук никаким образом не связан с функцией-компонентом, а просто вызывается внутри нее (если связан, то как это происходит?). Если можно, ответьте развернуто, ну или с псевдокод-примерами.
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Во-первых, хранит Map где ключи - это компоненты, а значения - их состояния
Во-вторых, хранит шаренную ссылку на текущее состояние: https://github.com/facebook/react/blob/main/packag...
Ну и вероятно, есть стэк состояний (по их исходникам глубоко не копал, но я бы сделал это именно так)

Перед вызовом функции-компонента, отправляем текущее состояние в стэк, на его место достаем из Map состояние для нужного компонента, запускаем функцию-компонент, по выходу восстанавливаем из стека состояние для родительского компонента.
При запуске хука - просто получаем текущее состояние и работаем с ним: https://github.com/facebook/react/blob/main/packag...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы