Проверяет понимание порядка выполнения хуков useMemo и useEffect в жизненном цикле React-компонента и их роли в рендеринге.
В React рендер компонента — это синхронный процесс, в ходе которого вычисляется JSX. Хуки useMemo и useEffect участвуют в этом процессе на разных этапах, и понимание их порядка критично для правильной работы с зависимостями и побочными эффектами.
Когда компонент рендерится, React сначала выполняет тело функции компонента. В этот момент вызываются все хуки в порядке их объявления. useMemo вычисляется прямо во время рендера — синхронно, до того как React применит изменения к DOM. useEffect же регистрируется во время рендера, но его колбэк откладывается и вызывается после того, как браузер отрисует изменения (commit phase).
function Example({ items }) {
console.log('render');
const total = useMemo(() => {
console.log('useMemo');
return items.reduce((s, i) => s + i, 0);
}, [items]);
useEffect(() => {
console.log('useEffect');
}, [total]);
return <div>{total}</div>;
}
// Порядок логов: render -> useMemo -> useEffectИтог: useMemo всегда выполняется раньше useEffect, потому что относится к фазе рендера, а useEffect — к фазе после отрисовки. Используйте useMemo для дорогих вычислений, а useEffect — для побочных эффектов, зависящих от уже отрендеренного состояния.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
React
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию