Назад к вопросам
Middle
3
import { useEffect, useLayoutEffect } from 'react'; export default function App() { console.log('1'); useEffect(() => { console.log('2'); }, []); useLayoutEffect(() => { console.log('3'); }, []); return <div>BCraft</div>; }
Компании, где спрашивали
BCraft
Ответ от нейросети
sobes.tech AI
В данном React-компоненте порядок вывода в консоль будет следующим:
- Сначала выполняется тело функции компонента, поэтому выводится
1. - Затем вызывается
useLayoutEffect, который срабатывает синхронно после всех изменений DOM, но до того, как браузер отрисует изменения. Поэтому выводится3. - После отрисовки компонента вызывается
useEffect, который выполняется асинхронно, поэтому выводится2.
Итоговый порядок в консоли:
1
3
2
Это связано с тем, что useLayoutEffect блокирует отрисовку до выполнения своего кода, а useEffect выполняется после отрисовки.