Как вложенность React-компонентов задаёт порядок рендера?

Дерево: App → main → Panel → div → Leaf → span. При заданном первом рендере сообщения идут app, panel, leaf, а отступы в исходном файле не управляют исполнением.

Короткий ответ

Что ответить на собеседовании

Дерево: App → main → Panel → div → Leaf → span. При заданном первом рендере сообщения идут app, panel, leaf, а отступы в исходном файле не управляют исполнением.

Подробный разбор

Ответ с пояснениями

Условие

Без StrictMode и Suspense впервые монтируется App:

function Leaf() { console.log('leaf'); return <span>Текст</span>; }
function Panel() { console.log('panel'); return <div><Leaf /></div>; }
function App() { console.log('app'); return <main><Panel /></main>; }

Покажите вложенность дерева и порядок этих синхронных сообщений.

Ответ

Дерево: App → main → Panel → div → Leaf → span. При заданном первом рендере сообщения идут app, panel, leaf, а отступы в исходном файле не управляют исполнением.

Вложенность определяется возвращаемыми JSX-элементами, а не табуляцией. Тело App исполняется до обработки возвращённого Panel; аналогично Panel предшествует Leaf. Это не правило порядка useEffect и не обещание одного вызова функции во всех режимах React. Для читаемости оформляют JSX по уровням дерева, не меняя состав возвращаемых элементов.

Источник: react.dev.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее