Sobes.tech
Назад к вопросам
Middle
5

Что такое серверный и клиентский компонент в Next.js? Как объявляется клиентский компонент? Можно ли вкладывать серверный компонент в клиентский и наоборот?

Компании, где спрашивали
News Media Holdind

Ответ от нейросети

sobes.tech AI

В Next.js компоненты могут быть серверными (Server Components) и клиентскими (Client Components).

  • Серверный компонент рендерится на сервере и не содержит клиентского состояния или эффектов. Он может напрямую обращаться к базе данных и API без передачи данных на клиент.

  • Клиентский компонент рендерится на клиенте, поддерживает состояние, хуки React (например, useState, useEffect) и взаимодействие с пользователем.

Чтобы объявить клиентский компонент, в начале файла нужно добавить директиву:

'use client';

import React, { useState } from 'react';

export default function ClientComponent() {
  const [count, setCount] = useState(0);
  return <button onClick={() => setCount(count + 1)}>Clicked {count} times</button>;
}

Вложенность:

  • Серверный компонент может вкладывать клиентский компонент, так как серверный компонент рендерится на сервере и может отдавать клиентский компонент для рендера на клиенте.
  • Клиентский компонент не может напрямую содержать серверный компонент, так как серверный компонент не поддерживает клиентские хуки и состояние.

Таким образом, вложенность возможна только в направлении серверный → клиентский.