React · Middle · Frage 6 von 75
Warum sollte man eine Komponente nicht in einer anderen Komponente deklarieren?
function Page() {
function Row({ item }) { return <li>{item}</li>; }
return <ul>{items.map(i => <Row key={i} item={i} />)}</ul>;
}- 1Es verletzt die Hook-Regeln und verursacht einen Linter-Fehler
- 2Verschachtelte Funktionen können ohne
React.memokein JSX zurückgeben - 3Jedes Rendering erzeugt einen neuen Typ
Row- er wird neu erzeugt
Antwort zeigen
Richtige Antwort: Jedes Rendering erzeugt einen neuen Typ Row - er wird neu erzeugt
Erklärung
Für React sind Row aus verschiedenen Renderings unterschiedliche Komponententypen, denn es sind neue Funktionen. Der Teilbaum wird daher jedes Mal unmountet und neu gemountet: Zustand und Fokus gehen verloren, das DOM wird neu erzeugt. Deklariere Komponenten auf oberster Ebene des Moduls.