A Linha 'use client'
Parte da seção Essenciais do Next.js do Journey de React da Coddy. Lição 19 de 47.
'use client' parece uma string perdida que alguém esqueceu de deletar. Não é: é uma diretiva, e tem duas regras que valem a pena memorizar, porque ambas costumam pegar as pessoas de surpresa.
Regra 1: deve ser a primeira linha
Antes dos imports. Antes dos comentários que importam. A primeira coisa no arquivo:
'use client';
import { useState } from 'react';Coloque-a abaixo de um import e ela deixa de ser uma diretiva: torna-se uma expressão de string inútil, o arquivo permanece como um server component e você recebe o erro de hook como se nunca a tivesse digitado. Esta custa tempo real às pessoas, porque a linha está bem ali no arquivo, parecendo correta.
Regra 2: isso marca o arquivo inteiro
Não há como marcar apenas um componente. Se um arquivo tem a diretiva, tudo o que for definido nele é código client:
'use client';
function Row() { … } // cliente
export default function Table() { … } // cliente tambémE isso se espalha para baixo: qualquer coisa que um componente client importa e renderiza se torna código client também. Uma diretiva no topo de um arquivo grande pode silenciosamente enviar muito JavaScript para o navegador, que é exatamente o problema que a próxima lição resolve.
Desafio
Fácilcomponents/Counter.jsx tem uma linha 'use client' no lugar errado. O app falha com o erro de hook mesmo assim.
- Mova
'use client';para que seja a primeira linha decomponents/Counter.jsx, acima do import.
Ambos os componentes nesse arquivo, Counter e o ResetButton que ele renderiza, tornam-se client components a partir dessa única linha. Você não precisa de uma segunda diretiva e não deve adicionar uma.
Experimente você mesmo
import './globals.css';
export const metadata = {
title: 'My App',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}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