useRef ist ein React-Hook, der es ermöglicht, eine dauerhafte Referenz auf einen Wert oder ein DOM-Element zu erstellen. Im Gegensatz zu useState, das zum Verwalten des Status verwendet wird, der erneute Renderings auslöst, wird useRef hauptsächlich für Nebeneffekte oder den direkten Zugriff auf DOM-Elemente verwendet.
Der useRef-Hook ist besonders nützlich für:
Der useRef-Hook gibt ein Objekt mit der Eigenschaft .current zurück. Wenn Sie useRef aufrufen, wird eine dauerhafte Referenz auf den Wert erstellt, den Sie als Argument übergeben. Diese Referenz wird in der .current-Eigenschaft des zurückgegebenen Objekts gespeichert.
Um eine Referenz zu erstellen, rufen Sie einfach useRef mit dem Anfangswert auf.
import { useRef} from 'react' const App = () => { const countRef = useRef(0) return (...) } export default App
Im obigen Beispiel ist countRef eine Referenz auf den Anfangswert 0.
Um auf den Referenzwert zuzugreifen, rufen Sie einfach das countRef-Objekt mit der Eigenschaft .current auf
import { useRef} from 'react' const App = () => { const countRef = useRef(0) const increment = () => { countRef.current++ } return ( <div> <p>Count: {countRef.current}</p> <button onClick={increment}>Increment</button> </div> ) } export default App
Wenn Sie im obigen Beispiel auf die Schaltfläche klicken, wird die Inkrementierungsfunktion aufgerufen, die die countRef erhöht, aber die Anzahl wird nicht aktualisiert bei
Count: {countRef.current}
weil das Aktualisieren von useRef keine erneuten Renderings wie useState verursacht.Aktualisieren Sie den Code auf das folgende Beispiel, um das erwartete Ergebnis zu erhalten.
import { useRef, useState } from 'react' const App = () => { const countRef = useRef(0) const [count, setCount] = useState(0) const increment = () => { countRef.current++ setCount(countRef.current) } return ( <div> <p>Count: {count}</p> <button onClick={increment}>Increment</button> </div> ) } export default App
Es ist möglich, den useRef-Hook zu verwenden, um auf die Eigenschaften von HTML-Elementen zuzugreifen und diese zu ändern
const App = () => { const inputRef = useRef(null) const handleFocus = () => { inputRef.current.focus() } return( <input ref={inputRef} /> ) }
Im Gegensatz zu useState oder variable kann useRef Werte und Daten zwischen erneuten Renderings übergeben, z. B. zwischengespeicherte Daten oder Konfigurationseinstellungen.
In manchen Fällen kann die Verwendung von useRef bei der Komponentenoptimierung helfen, indem unnötige erneute Renderings vermieden werden. Wenn Sie beispielsweise eine Komponente haben, die eine große Liste von Elementen rendert, können Sie diese mit useRef zwischenspeichern und nur die geänderten Elemente erneut rendern.
Wenn Sie versuchen, einen Verweis auf diese Weise an Ihre eigene Komponente zu übergeben
const inputRef = useRef(null); return <MyInput ref={inputRef} />;
Möglicherweise wird in der Konsole eine Fehlermeldung angezeigt:
Warnung: Funktionskomponenten können keine Referenzen zugewiesen werden. Versuche, auf diese Referenz zuzugreifen, schlagen fehl. Wollten Sie React.forwardRef() verwenden?
Um dieses Problem zu lösen, umschließen Sie die benutzerdefinierte Komponente wie folgt mit „forwardRef“:
const inputRef = useRef(null); return <MyInput value={value} ref={inputRef} />;
Benutzerdefinierte Komponente:
import { forwardRef } from 'react'; const MyInput = forwardRef(({ value, onChange }, ref) => { return ( <input value={value} onChange={onChange} ref={ref} /> ); }); export default MyInput;
useRef ist ein leistungsstarker Hook, der hauptsächlich für Nebeneffekte wie das Zwischenspeichern von Daten zwischen erneuten Renderings oder den Zugriff auf Elemente des DOM verwendet wird. Es ist ein großartiges Tool zur Leistungsoptimierung und zum Erreichen spezifischer Funktionen in der React-Anwendung.
Das obige ist der detaillierte Inhalt vonuseRef verstehen: Ein Leitfaden für Anfänger. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!