Загрузка…
Загрузка…
ReactDOM.render — legacy API React 17 и раньше. createRoot — входная точка React 18+: concurrent rendering, automatic batching, startTransition, улучшенная гидратация.
// Legacy
import ReactDOM from 'react-dom';
ReactDOM.render(<App />, document.getElementById('root'));
// React 18+
import { createRoot } from 'react-dom/client';
const root = createRoot(document.getElementById('root'));
root.render(<App />);Обновления: root.render(...) снова; размонтирование: root.unmount() вместо ReactDOM.unmountComponentAtNode.
| Аспект | render | createRoot |
|---|---|---|
| Batching вне событий | ограничен | automatic |
| Concurrent | нет | да |
| Warnings о legacy | — | Strict Mode строже |
| Hydration | hydrate | hydrateRoot |
На собеседовании ждут: «просто заменить вызов недостаточно для фич — нужен createRoot, иначе часть React 18 API ведёт себя как в старом режиме или предупреждает». SSR: пара hydrateRoot / streaming.
Команды часто «на React 18 по package.json», но всё ещё на ReactDOM.render — и удивляются отсутствию batching/transition. Правильный bootstrap — часть ответа про concurrent features.
