Führen Sie asynchrone Aufgaben mit useEffect sauber und sicher aus
Vom Aufrufen einer API zum Festlegen einer Timeout-Verzögerung haben Sie sich sicher schon gefragt, wie man es richtig macht, wenn man den React-Hook verwendet useEffect. Wenn das immer noch verschwommen klingt, dann ist dieser Artikel für Sie. Wenn nicht, lernen Sie vielleicht zumindest einen anderen Ansatz, um die Arbeit zu erledigen, oder fühlen sich dabei sicherer.
Ich werde 3 Möglichkeiten vorstellen, wie man es sicher und ordentlich macht. Aber zuerst möchte ich zeigen, was Sie NICHT tun sollten.
Führen Sie die asynchrone Aufgabe nicht direkt in useEffect aus, sondern packen Sie Ihre asynchrone Aufgabe IMMER in eine Funktion und rufen Sie sie nur aus useEffect auf.
Hier ist ein Beispiel dafür, was Sie NICHT tun sollten:
useEffect(async () => {
await getData();
},[]);
Wenn Sie das tun, was dieses BAD-Beispiel zeigt, würde dies zu einem React-Fehler führen:
Effektrückrufe sind synchron, um Racebedingungen zu verhindern.
In Ordnung, jetzt können wir sicher zu den guten Praktiken übergehen ⬇️
Wenn Sie beabsichtigen, eine asynchrone Aufgabe auszuführen, um beispielsweise einige Daten von einer API zu erhalten und den Ladezustand Ihrer Komponente zu aktualisieren, müssen Sie die Funktion innerhalb des Hooks definieren und sie dann aufrufen:
useEffect(() => {
async function getData() {
setLoading(false);
const reponse = await myApi.getSomeGoodData()
setLoading(true);
}
getData();
},[]);
Wenn Sie beabsichtigen, die von Ihnen definierte asynchrone Funktion wiederzuverwenden, ist es eine gute Idee, sie in Ihrem funktionalen Komponentenkörper zu definieren, der vom useCallbackHook umschlossen ist. Hör zu:
const getData = useCallback(() => {
setLoading(false);
const reponse = await myApi.getSomeGoodData()
setLoading(true);
}, [])
useEffect(() => {
getData()
},[getData])
Die beiden vorherigen Beispiele konzentrierten sich hauptsächlich auf das Abrufen von Daten und das Aktualisieren des Komponentenstatus. Dieser soll auch ein allgemeines Szenario für asynchrone Aufgaben innerhalb von useEffect zeigen, das ein Intervall oder ein Timeout setzt.
Der Trick dafür besteht darin, IMMER das Timeout und das Intervall zu löschen, das in der useEffect.
useEffect(() => {
const timeout = setTimeout(() => {
// do something
}, 100)
return () => {
clearTimeout(timeout);
}
},[])
useEffect(() => {
const interval = setInterval(() => {
// do something
}, 100)
return () => {
clearInterval(interval);
}
},[])
Die obigen Beispiele decken 99,99 % der asynchronen Situationen ab, denen Sie während der Entwicklung von React begegnen können. Denken Sie nur daran, die Effektabhängigkeiten zu beachten. Wenn Sie Ihren Fall in den folgenden Beispielen nicht gefunden haben, hinterlassen Sie einen Kommentar und ich werde ihn prüfen.
Danke fürs Lesen
— Fernando Abolafio
Wenn Sie eine Anfrage an facebook.com stellen, sucht Ihr Computer nach dem Domänennamen, um diesen in eine IP-Adresse zu übersetzen, damit Ihr Computer diese Verbindung herstellen kann.
Im Jahr 2022 wechselte ich von einer nicht-technischen Rolle in die Cybersicherheit. Ich habe meinen ersten Abschluss in Deutsch gemacht, ich weiß, dass Sie schockiert und neugierig sind, wie mir der Übergang gelungen ist. Nun, es ist einfach passiert.
Wenn wir auf diesem Planeten weiterhin erfolgreich sein wollen, müssen wir gefährliche Gespräche führen. Diejenigen, die das in Frage stellen, was wir getan haben, was wir tun und was wir derzeit weiterhin tun werden (oder planen).
[Alarm auslösen: Dieser Aufsatz enthält Screenshots von Menschen, die den Mörder von Jordan Neely loben.] Polizeibeamte haben endlich – und vielleicht widerstrebend – Daniel Penny, den Mann, der Jordan Neely bis zu seinem Tod gewürgt hat, wegen dieses Mordes angeklagt.
In der sich schnell entwickelnden Geschäftslandschaft von heute hat das Konzept der Hybrid- und Remote-Arbeit eine beispiellose Dynamik erlangt. Während sich Unternehmen weiterhin an die sich verändernden Bedürfnisse und Erwartungen ihrer Mitarbeiter anpassen, sind Experten aus verschiedenen Bereichen zusammengekommen, um die Vorteile, Herausforderungen und die Zukunft dieser transformativen Arbeitsweise zu diskutieren.
Wie oft haben Sie ohne nachzudenken eine Plastikflasche, ein Glas, eine Aluminiumdose oder ein Öko-Energiepaket weggeworfen? Wie oft haben Sie sich gewünscht, dass Sie für das Recycling etwas zurückbekommen könnten? Wenn Sie wie die meisten Menschen sind, lautet die Antwort wahrscheinlich „vielfach“. Recycling wird oft als Ärger, lästige Pflicht oder Pflicht angesehen, die keinen unmittelbaren oder greifbaren Nutzen bringt.