In React haben wir zwei Möglichkeiten, den Zustand der Komponente zu verwalten – useState ist nicht immer die richtige Antwort❌ und useReducer. Der zweite ist weniger beliebt, da er für komplexere Objekte im Staat gedacht ist und auf den ersten Blick für neue Programmierer ehrlich gesagt zu knifflig aussieht, aber das ist nicht der Fall.
UseState sieht jedoch sehr einfach und verständlich aus, sodass neue Programmierer es oft häufiger als erforderlich verwenden.
Abhängig von Benutzerinteraktionen soll der Status zum Neuzeichnen von Komponenten verwaltet werden. Wenn Sie sich an etwas erinnern möchten, ohne es wiederzugeben, sollten Sie es wahrscheinlich nicht in den Status versetzen. useRef wäre die beste Option.
Sie möchten sich einige Werte beim erneuten Rendern merken, ohne sie dem Benutzer anzuzeigen. Sie haben bereits Daten im Staat oder Sie erhalten sie über Requisiten, müssen sie aber transformieren; Sie müssen diesen neuen Wert nicht im neuen useState ist nicht immer die richtige Antwort❌-Objekt behalten, eine neue Variable erstellen und damit arbeiten, ohne nutzlose erneute Renderings auszulösen.
Sie möchten die Komponente neu zeichnen, wenn sich der Wert ändert; Die beliebtesten Beispiele sind das Ein-/Ausblenden von Panels, Spinnern, Fehlermeldungen und das Ändern von Arrays.
import React, { useState ist nicht immer die richtige Antwort❌, useEffect } from 'react'; const MyComponent = (props) => { const [name, setName] = useState ist nicht immer die richtige Antwort❌('name'); const { description, index } = props; const [fullName, setFullName] = useState ist nicht immer die richtige Antwort❌(''); useEffect(() => { setFullName(`${name} - ${description}`); }, [name, description]); return ( <div> <h1>{fullName}</h1> <input type="text" value="{name}" onchange="{(e)"> setName(e.target.value)} placeholder="Enter name" /> <p>{description}</p> </div> ); }; export default MyComponent;
Dieses Code-Snippet definiert eine React-Komponente, die Namens- und FullName-Zustände initialisiert und den useEffect-Hook verwendet, um FullName zu aktualisieren, wenn sich Name oder Beschreibung ändern. Es enthält auch ein Eingabefeld zum Aktualisieren des Namensstatus und zeigt den vollständigen Namen und die Beschreibung an.
Dieser Ansatz führt zu nutzlosen erneuten Renderings und unnötiger Verwendung von
useEffect.Wenn sich der Name oder die Beschreibung ändert und React die Komponente neu rendert, prüft React, ob eine Funktionalität vorhanden ist, die von diesen Werten abhängt. useEffect wird ausgelöst, wenn sich der Name oder die Beschreibung ändert, wodurch ein neues Re-Rendering erstellt wird.
import React, { useState ist nicht immer die richtige Antwort❌ } from 'react'; const MyComponent = (props) => { const [name, setName] = useState ist nicht immer die richtige Antwort❌(''); const { description, index } = props; const nameWithDescription = `${name} - ${description}`; return ( <div> <h1>{nameWithDescription}</h1> <input type="text" value="{name}" onchange="{(e)"> setName(e.target.value)} placeholder="Enter name" /> <p>{description}</p> </div> ); }; export default MyComponent;
In diesem Codeausschnitt wird nameWithDescription direkt aus Name und Beschreibung berechnet, ohne dass useEffect erforderlich ist. Der Namensstatus wird mit einer leeren Zeichenfolge initialisiert. Die nameWithDescription wird automatisch aktualisiert, wenn sich Name oder Beschreibung aufgrund des Re-Rendering-Mechanismus von React ändern.
Wir können das Standardverhalten von React verwenden und den richtigen Wert erhalten, wenn der Name oder die Beschreibungen geändert werden, ohne ein weiteres erneutes Rendern auszulösen.
Das obige ist der detaillierte Inhalt vonuseState ist nicht immer die richtige Antwort❌. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!