Dois Tipos de Componente
Parte da seção Essenciais do Next.js do Journey de React da Coddy. Lição 17 de 47.
Cada componente que você escreveu até agora nesta seção foi executado em um lugar que talvez você não tenha notado: no servidor. Isso não é um modo especial que você ativou: é o padrão, e é a ideia mais importante do Next.js.
Existem exatamente dois tipos de componentes, e cada um oferece algo que o outro não consegue.
Server components: o padrão
- Eles executam uma vez, no servidor, antes de a página ser enviada
- Eles podem ser
async, portanto podem usarawaitpara buscar dados diretamente dentro do componente - Eles não enviam JavaScript para o navegador: o usuário baixa o resultado, não o código
O problema: no momento em que a página chega ao navegador, um componente de servidor está finalizado. Ele é uma captura instantânea. Ele não pode lembrar de nada, reagir a um clique ou mudar.
Client components: opt in
Quando você precisa que a página responda, você habilita o arquivo no navegador com uma linha bem no topo:
'use client';Isso marca o arquivo como um componente cliente (client component), e apenas componentes cliente podem usar:
- Hooks:
useState,useEffecte afins - Manipuladores de eventos:
onClick,onChange, … - APIs do navegador:
window,localStorage
Note a troca. Um componente do servidor (server component) é rápido e silencioso, mas estático. Um componente do cliente (client component) é interativo, mas seu código precisa ser baixado e executado no navegador.
Portanto, a pergunta que você se fará sobre cada componente a partir de agora não é "de qual deles eu gosto?", mas sim "esta peça em particular precisa responder ao usuário?" Se a resposta for não (e geralmente é), deixe-a no servidor.
Experimente você mesmo
Esta lição não inclui um desafio de código.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Essenciais do Next.js
1Por que usar o Next.js
O que o Next.js adicionaA pasta AppSua primeira páginaRecapitulação: Por que usar o Next.js4Servidor & Cliente
Dois Tipos de ComponenteLendo o ErroA Linha 'use client'Mantenha as Partes de Cliente PequenasServidor Dentro do ClienteRecapitulação: Servidor & Cliente