Хуки — это функции. Ты их вызываешь в функции. Когда реакт вызывает твою функцию-компонент, все хуки вызываются по порядку сверху вниз. Каждый раз.
А как он вызывает их в соответствующем порядке? useEffect после маунта. Там есть специальный планировщик Scheduler? Он же отвечает за батчинг обновления стейта
Я думаю тут под капотом что-то вроде паттерна Observer, тоесть когда приходят новые параметры он автоматом перезапускает массив всех функций, подписанные на эти параметры.
const fn = () => { a() b() c() } В каком порядке будут вызваны функции? При чем тут шедулер и батчинг?
Прочитай те самые две статьи, если интересно, как на самом деле
https://kekpek.dev/chat-faq
Он имеет ввиду что-то вроде триггера должно стоять когда сработал render или return, поскольку useEffect отрабатывает после того как компонент отдал вёрстку на рендер.
const fn = () => { useState() useEffect() useRef() } fn() В каком порядке будут вызваны функции? При чем тут шедулер и батчинг?
Ну это действительно странно, тоесть получается useEffect срабатывает до того как отрендерился компонент?
Почитай статьи реально
Что ты понимаешь под рендером?
Что значит «срабатывает»? Такого термина нет. Вызывается он сразу, как только интерпретатор дошёл до строки, где происходит вызов
Переданная функция useEffectбудет запущена после того, как рендеринг будет зафиксирован на экране. - ну немного неугадал на одну вложеность, useEffect видимо "откладывает" запуск переданного коллбека, а запускает его после того как сработал return
Будут вызваны поочередно, как при вызове обычной js-функции, только дальше Реакт делает свои фокусы под капотом и при выполнении данного компонента получаем в консоли useEffect(() => console.log('1. useEffect'), []) useLayoutEffect(() => console.log('2. useLayoutEffect'), []) useMemo(() => console.log('3. useMemo'), []) 3. useMemo 2. useLayoutEffect 1. useEffect
Ну делает и делает, пускай
Кстати, там про HOC и Hooks - очень годная статья https://www.robinwieruch.de/react-hooks-higher-order-components
но ведь memo это хок...
Ага
Обсуждают сегодня