useEffect
ist ein Haken in React, der zum Umgang mit Nebenwirkungen in funktionellen Komponenten verwendet wird. Nebenwirkungen sind Vorgänge, die etwas außerhalb des Umfangs der Komponente beeinflussen, z. B. das Abholen von Daten, das Einrichten von Abonnements oder die manuelle Änderung des DOM. useEffect
können Sie diese Nebenwirkungen nach dem Rendering ausführen. Sie können verwendet werden, um Ihre Komponente mit einem externen System zu synchronisieren.
Um useEffect
zu verwenden, übergeben Sie normalerweise eine Funktion, die den Nebeneffektcode enthält. Diese Funktion wird standardmäßig nach jedem Render aufgerufen. Sie können jedoch steuern, wenn sie aufgerufen wird, indem ein Abhängigkeitsarray als zweites Argument zur useEffect
verwendet wird.
Hier ist ein grundlegendes Beispiel für die Verwendung useEffect
:
<code class="javascript">import React, { useEffect, useState } from 'react'; function MyComponent() { const [data, setData] = useState([]); useEffect(() => { // This is the side effect fetch('/api/data') .then(response => response.json()) .then(data => setData(data)); }, []); // Empty dependency array means this effect runs once on mount return ( <div> {data.map(item => ( <div key="{item.id}">{item.name}</div> ))} </div> ); }</code>
In diesem Beispiel wird useEffect
verwendet, um Daten aus einer API abzurufen, wenn die Komponenten montiert werden. Das leere Abhängigkeits -Array []
stellt sicher, dass der Effekt nur einmal auf dem anfänglichen Rendern ausgeführt wird.
Sie sollten useEffect
in Ihren React -Komponenten verwenden, wenn Sie Vorgänge ausführen müssen, die sich nicht direkt auf die Darstellung der Komponente selbst beziehen. Diese Operationen umfassen, ohne darauf beschränkt zu sein, auf:
useEffect
ist besonders nützlich für die Ausführung dieser Vorgänge nach dem anfänglichen Rendern einer Komponente oder als Reaktion auf bestimmte Zustandsänderungen. Sie können angeben, wann der Effekt ausgeführt werden sollte, indem Sie ein Abhängigkeitsarray als zweites Argument für useEffect
übergeben. Zum Beispiel:
[]
vorbei. Zu den häufigen Nebenwirkungen, die mit useEffect
behandelt werden können, gehören:
Daten abrufen : Sie können verwenden useEffect
Daten aus einer API oder einer Datenbank abzurufen, wenn eine Komponente montiert oder wenn sich bestimmte Requisiten oder Status ändern. Dies stellt sicher, dass die Daten Ihrer Komponente auf dem neuesten Stand sind.
<code class="javascript">useEffect(() => { fetchData(); }, [someDependency]);</code>
Einrichten von Abonnements : Wenn Ihre Komponente auf Änderungen in einer externen Datenquelle reagieren muss, können Sie useEffect
um Abonnements einzurichten.
<code class="javascript">useEffect(() => { const subscription = someExternalDataSource.subscribe(handleChange); return () => subscription.unsubscribe(); }, []);</code>
Manuell das DOM ändern : Manchmal müssen Sie beispielsweise möglicherweise direkt mit dem DOM interagieren, um sich auf ein Eingabefeld zu konzentrieren.
<code class="javascript">useEffect(() => { inputRef.current.focus(); }, []);</code>
Timer : Einrichten und Löschen von Timern wie setTimeout
oder setInterval
können mit useEffect
verwaltet werden.
<code class="javascript">useEffect(() => { const timer = setTimeout(someFunction, 1000); return () => clearTimeout(timer); }, []);</code>
Die ordnungsgemäße Aufräumarbeiten bei useEffect
ist entscheidend, um Speicherlecks und unnötige Vorgänge zu verhindern, insbesondere bei Abonnements oder Timern. Um die Reinigung durchzuführen, geben Sie eine Funktion aus dem useEffect
zurück. Diese Reinigungsfunktion wird aufgerufen, wenn die Komponente aufgrund einer Abhängigkeitsänderung nicht mehr abmontiert wird oder bevor der Effekt erneut ausgeführt wird.
Hier ist ein Beispiel für die Implementierung der Reinigung:
<code class="javascript">import React, { useEffect, useState } from 'react'; function MyComponent() { const [count, setCount] = useState(0); useEffect(() => { const timer = setInterval(() => { setCount(prevCount => prevCount 1); }, 1000); // Cleanup function return () => { clearInterval(timer); }; }, []); // Empty dependency array ensures this effect runs once on mount return ( <div> <h1>Count: {count}</h1> </div> ); }</code>
In diesem Beispiel stellt useEffect
ein Intervall ein, das jede Sekunde einen Zähler erhöht. Die Reinigungsfunktion clearInterval(timer)
stellt sicher, dass das Intervall gelöscht wird, wenn sich die Komponente entzieht oder wenn der Effekt aufgrund einer Abhängigkeitsänderung erneut ausgeführt wird. Dies verhindert, dass das Intervall weiter im Hintergrund ausgeführt wird, was Speicherlecks oder unerwartete Verhaltensweisen verursachen kann.
Das obige ist der detaillierte Inhalt vonWas ist Useffizität? Wie verwenden Sie es, um Nebenwirkungen auszuführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!