Проверяет понимание влияния клиентских компонентов в корневом layout на размер бандла и производительность Next.js приложения.
В Next.js (App Router) корневой layout — это серверный компонент по умолчанию. Когда вы добавляете в него клиентские компоненты с директивой 'use client', весь layout и все его дочерние компоненты становятся частью клиентского бандла. Это означает, что JavaScript для этих компонентов будет отправлен в браузер, увеличивая размер загружаемого кода.
Большое количество клиентских компонентов в layout приводит к следующим проблемам:
// app/layout.tsx
import ClientComponent from './ClientComponent';
export default function RootLayout({ children }) {
return (
<html>
<body>
<ClientComponent /> {/* делает layout клиентским */}
{children}
</body>
</html>
);
}Вместо этого лучше оставить layout серверным и выносить клиентские компоненты в конкретные страницы или дочерние компоненты, где они действительно нужны.
Используйте 'use client' только там, где требуется интерактивность (обработчики событий, хуки состояния). Держите layout и статические части серверными, чтобы минимизировать бандл и улучшить производительность.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию