So setzen Sie useState const auf den Wert der Eingabe bei Änderung
Angenommen, ich habe eine Variable in einer Funktionskomponente wie folgt erstellt:
const [quizName, setQuizName] = useState("");
Wie kann ich diesen Wert basierend darauf ändern, was ein Benutzer in eine Eingabe eingibt? Meine Idee war folgende:
<input
value={quizName}
onChange={setQuizName(value)}
></input>
Aber es weiß nicht, was Wert ist, wie kann ich den Wert in meine quizName-Variable bekommen?
Antworten
<input
value={quizName}
onChange={(e)=>setQuizName(e.target.value)}>
</input>
Der einfachste Weg ist, eine Funktion in onChange der Eingabe zu haben, wie:
<input value={quizName} onChange={(e)=>setQuizName(e.target.value)} />
Es ist okay! Aber bitte um Gottes willen, bitte hör auf damit!
Hier ist der Grund:
Sie erstellen bei jeder Änderung der Eingabe eine Funktion und führen sie aus! Dies ist nicht in Ordnung von Performance-Schraubstock! vor allem, wenn Sie es in einer großen App überall in Ihren Komponenten tun!
Was Sie tun müssen, ist einfach useCallback
wie folgt zu verwenden :
const [quizName, setQuizName] = useState("");
const handleInputChange = useCallback((e) => {
setQuizName(e.target.value)
}, [setQuizName])
return (
<input value={quizName} onChange={handleInputChange} />
)
Hier ist eine Beschreibung der useCallback
Reaktionsdokumentationen:
https://reactjs.org/docs/hooks-reference.html#usecallback
onChange={setQuizName(value)}
Wenn Sie die Funktion wie folgt aufrufen, wird sie ausgeführt, ohne dass Sie darauf warten müssen, sie zu ändern.
onChange={(e) => setQuizName(e.target.value)}
ist der richtige Weg, es zu tun