Was ist eine Wirkung / Nebenwirkung ?
Die Begriffe Nebeneffekt und Effekt werden synonym verwendet und bedeuten in React dasselbe: Sie beziehen sich auf Vorgänge, die sich nicht auf die Benutzeroberfläche oder den Ausgabewert auswirken. Wenn die von Ihnen ausgeführte Operation eine andere Statusänderung als den endgültigen Rückgabewert verwaltet, ist dies ein Nebeneffekt!
Die Funktion einer React-Komponente besteht darin, das Rendern zu verarbeiten und die Benutzeroberfläche zu manipulieren. Da sich Nebeneffekte nicht auf die Renderphase auswirken, gehören sie nicht in den Hauptteil einer Komponente.
Was ist useEffect?
useEffect ist ein React Hook, mit dem Sie Nebeneffekte unabhängig vom Rendering ausführen können.
Wenn Sie Teile Ihres Codes haben, die nicht direkt mit der Benutzeroberfläche zusammenhängen, oder Aufgaben, die asynchron sind und außerhalb des normalen Kontrollflusses ausgeführt werden, sollten Sie sie in den useEffectHook einfügen. Dies ermöglicht es ihnen, außerhalb des Renderzyklus zu arbeiten und hinter den Kulissen zu arbeiten, ohne die Benutzeroberfläche zu stören.
useEffect akzeptiert zwei Argumente:
Beispiele für Berechnungen, die unabhängig vom Rendern sind und in einem useEffectHook leben sollten :
fetch);import { useEffect } from 'react'useEffect(() => { logic }, [dependencies]);
Schauen wir uns an, wie useEffectfunktioniert. In diesem Beispiel erhalten wir Benutzerinformationen aus einer Datenbank, nachdem ein loggedInStatus auf aktualisiert wurde true, und drucken diese Informationen dann auf der Seite:
import { useState, useEffect } from 'react';
function App() {
const [loggedIn, setLoggedIn] = useState(false);
const [userName, setUserName] = useState("");
useEffect( () => {
if (loggedIn === true) {
// [ retrieving user info from an imaginary database ]
// [ we set the returned user info in state ]
setUserName("Lisa Simpson");
} else {
setUserName("");
}
}, [loggedIn]);
return (
<div>
<h1>Hello</h1>
<button onClick={ () => setLoggedIn(!loggedIn) } >Log in / out</button>
{
loggedIn === true
? <p>Hello, {userName}</p>
: <p>Please log in</p>
}
</div>
)
};
export default App;
ifAnweisung, die eine imaginäre Datenbank überprüft, um zu sehen, ob der Benutzer loggedIn. Wenn dies der Fall ist, aktualisieren wir den Status von userName. (In der Rückgabe haben wir eine Logik, um ihren Namen auf dem Bildschirm anzuzeigen, wenn loggedIn === true.)loggedInwird der Status mithilfe der setLoggedInFunktion aktualisiert .useEffectwird jedes Mal ausgeführt, wenn sich der loggedInStatus ändert, da wir loggedInals Abhängigkeit übergeben wurden.useEffectwird nicht ausgeführt, wenn die setUserNameFunktion ausgeführt wird, da wir sie nicht in das Abhängigkeitsarray eingefügt haben.Abhängigkeiten sind die Art und Weise, wie wir die Ausführung steuern useEffect.
useEffectbei jedem Rendering ausführen möchten , lassen Sie Abhängigkeiten aus.propsoder state-Werte verwenden, müssen Sie diese als Abhängigkeiten deklarieren; wenn sich diese Werte ändern, useEffectwird ausgeführt. (Im obigen Beispiel ist es in Ordnung, die setUserNameFunktion aus den Abhängigkeiten wegzulassen, da es sich nicht um einen Zustandswert handelt. Es handelt sich um eine Funktion, die den Zustandswert aktualisiert , sodass sie nie mit dem Zustand asynchron ist.)Einige Nebeneffekte – wie Timer oder Abonnements (Verbindungen zu einer persistenten Datenquelle) – erfordern eine Bereinigung, da wir nicht möchten, dass sie herumschweben, nachdem die Komponente aus dem DOM entfernt wurde.
Zum Aufräumen geben wir einfach eine Funktion zurück useEffectund es wird aufgeräumt; Diese Funktionen werden in geeigneter Weise als bezeichnet cleanup functions. Diese Bereinigungsfunktionen werden nach dem nächsten Rendern ausgeführt, jedoch vor dem nächsten useEffect.
Einleitung Ein Schlaganfall ist ein medizinischer Notfall, der jeden jederzeit treffen kann. Sie tritt auf, wenn die Durchblutung eines Teils des Gehirns gestört ist, was zu einem plötzlichen Verlust der Gehirnfunktion führt.
Begeben Sie sich auf eine spannende Reise voller Innovation und Erfolg und erschließen Sie das ungenutzte Potenzial dieser überraschenden No-Code-Plattformen. Lassen Sie mich eine Geschichte über Sapna erzählen, eine bemerkenswerte Unternehmerin.
Jeder rational denkende Mensch weiß, dass die politischen und medialen Kreise von der Linken dominiert werden, sogar von der extremen Linken, ein Zustand, der zu einem Ungleichgewicht im politischen Diskurs führt. Im Bereich der Religion ist dieses Ungleichgewicht deutlich sichtbar: Linke Zeitungen und Netzwerke beeilen sich nicht, den christlichen Glauben zu verteidigen.
„Er wird mich beschützen, wenn ich in Gefahr bin. Er wird mich in seinem Zelt verstecken.
Wenn man erwachsen wird, wird einem oft gesagt, dass die Welt so ist, wie sie ist, und dass das Leben nur darin besteht, sein Leben in der Welt zu leben, niemals sein Leben zu riskieren, einfach einem festgelegten Weg zu folgen und am Ende zu sterben, und versucht, es nicht zu tun Schlage zu viel gegen die Wände. Aber das ist ein sehr begrenztes Leben.
Gestern haben wir die Tür zum diesjährigen Eurovision Song Contest mit einem glitzernden, chaotischen großen Finale geschlossen, bei dem die schwedische Sängerin Loreen die Trophäe mit nach Hause nahm. Sie war damit die erste Frau, die zweimal gewann, und holte die Krone 50 Jahre nach dem Gewinn des Wettbewerbs durch ABBA zurück nach Schweden mit „Waterloo“. Sie entwickelten sich zu einem der größten Acts im Kanon der Popmusik.