La riga 'use client'
Fa parte della sezione Nozioni essenziali di Next.js del percorso React di Coddy. Lezione 19 di 47.
'use client' sembra una stringa fuori posto che qualcuno si è dimenticato di eliminare. Non è così: è una direttiva e ha due regole che vale la pena memorizzare, perché entrambe possono creare problemi.
Regola 1: deve essere la prima riga
Prima degli import. Prima dei commenti importanti. La primissima cosa nel file:
'use client';
import { useState } from 'react';Spostala sotto un import e smette di essere una direttiva: diventa un’espressione di stringa inutile, il file resta un componente server e ricevi l’errore dell’hook come se non l’avessi mai digitata. Questo errore fa perdere tempo sul serio, perché la riga è proprio lì nel file e sembra corretta.
Regola 2: contrassegna l'intero file
Non c'è modo di contrassegnare un singolo componente. Se un file contiene la direttiva, tutto ciò che vi è definito è codice client:
'use client';
function Row() { … } // client
export default function Table() { … } // anche clientE si propaga verso il basso: tutto ciò che un componente client importa e renderizza diventa a sua volta codice client. Una sola direttiva all’inizio di un file di grandi dimensioni può inviare silenziosamente molto JavaScript al browser, ed è proprio questo il problema che risolve la lezione successiva.
Sfida
Facilecomponents/Counter.jsx ha una riga 'use client', nella posizione sbagliata. In ogni caso, l'app non funziona a causa dell'errore relativo agli hook.
- Sposta
'use client';in modo che sia la prima riga dicomponents/Counter.jsx, prima dell'import.
Entrambi i componenti in quel file, Counter e ResetButton che viene renderizzato, diventano componenti client con quella singola riga. Non ti serve una seconda direttiva e non dovresti aggiungerne una.
Provalo tu
import './globals.css';
export const metadata = {
title: 'My App',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Nozioni essenziali di Next.js
4Server e Client
Due tipi di componentiLeggere l'erroreLa riga 'use client'Mantieni piccole le parti ClientServer dentro ClientRiepilogo: Server e Client7Navigazione lato client
Il link attivoRouting programmaticoFiltrare con l'URLGestori delle routeRiepilogo: navigazione2Routing e collegamenti
Le cartelle sono routeRoute annidateCollegare le pagineRoute dinamichePagine non trovateRiepilogo: routing5Dati sul server
Componenti asincroniIn attesa dei parametri della routeDue fetch contemporaneiStati di caricamentoGestione degli erroriRiepilogo: recupero dei dati8Progetto: Coddy Eats
Passaggio 1: La struttura