Haken useState
reagieren
Der React useState
Hook ermöglicht es uns, den Zustand in einer Funktionskomponente zu verfolgen.
Status bezieht sich im Allgemeinen auf Daten oder Eigenschaften, die in einer Anwendung nachverfolgt werden müssen.
ImportierenuseState
Um den useState
Hook zu verwenden, müssen wir import
ihn zuerst in unsere Komponente einfügen.
Beispiel:
An der Spitze Ihrer Komponente, import
dem useState
Haken.
import { useState } from "react";
Beachten Sie, dass wir destrukturieren useState
, react
da es sich um einen benannten Export handelt.
Weitere Informationen zur Destrukturierung finden Sie im ES6-Abschnitt .
InitialisierenuseState
Wir initialisieren unseren Zustand, indem useState
wir unsere Funktionskomponente aufrufen.
useState
akzeptiert einen Anfangszustand und gibt zwei Werte zurück:
- Der momentane Zustand.
- Eine Funktion, die den Status aktualisiert.
Beispiel:
Zustand am Anfang der Funktionskomponente initialisieren.
import { useState } from "react";
function FavoriteColor() {
const [color, setColor] = useState("");
}
Beachten Sie, dass wir erneut die zurückgegebenen Werte von destrukturieren useState
.
Der erste Wert, color
, ist unser aktueller Zustand.
Der zweite Wert, setColor
, ist die Funktion, die verwendet wird, um unseren Status zu aktualisieren.
Diese Namen sind Variablen, die beliebig benannt werden können.
Zuletzt setzen wir den Anfangszustand auf einen leeren String:useState("")
Zertifiziert werden!
$ 95 REGISTRIEREN
Zustand lesen
Wir können unseren Zustand jetzt überall in unsere Komponente einfügen.
Beispiel:
Verwenden Sie die Zustandsvariable in der gerenderten Komponente.
import { useState } from "react";
import ReactDOM from "react-dom";
function FavoriteColor() {
const [color, setColor] = useState("red");
return <h1>My favorite color is {color}!</h1>
}
ReactDOM.render(<FavoriteColor />, document.getElementById('root'));
Status aktualisieren
Um unseren Status zu aktualisieren, verwenden wir unsere Status-Updater-Funktion.
Wir sollten den Status niemals direkt aktualisieren. Bsp.: color = "red"
ist nicht erlaubt.
Beispiel:
Verwenden Sie eine Schaltfläche, um den Status zu aktualisieren:
import { useState } from "react";
import ReactDOM from "react-dom";
function FavoriteColor() {
const [color, setColor] = useState("red");
return (
<>
<h1>My favorite color is {color}!</h1>
<button
type="button"
onClick={() => setColor("blue")}
>Blue</button>
</>
)
}
ReactDOM.render(<FavoriteColor />, document.getElementById('root'));
Was der Staat halten kann
Der useState
Hook kann verwendet werden, um Strings, Zahlen, boolesche Werte, Arrays, Objekte und jede Kombination davon zu verfolgen!
Wir könnten mehrere Status-Hooks erstellen, um einzelne Werte zu verfolgen.
Beispiel:
Erstellen Sie mehrere Status-Hooks:
import { useState } from "react";
import ReactDOM from "react-dom";
function Car() {
const [brand, setBrand] = useState("Ford");
const [model, setModel] = useState("Mustang");
const [year, setYear] = useState("1964");
const [color, setColor] = useState("red");
return (
<>
<h1>My {brand}</h1>
<p>
It is a {color} {model} from {year}.
</p>
</>
)
}
ReactDOM.render(<Car />, document.getElementById('root'));
Oder wir können nur einen Zustand verwenden und stattdessen ein Objekt einschließen!
Beispiel:
Erstellen Sie einen einzelnen Hook, der ein Objekt enthält:
import { useState } from "react";
import ReactDOM from "react-dom";
function Car() {
const [car, setCar] = useState({
brand: "Ford",
model: "Mustang",
year: "1964",
color: "red"
});
return (
<>
<h1>My {car.brand}</h1>
<p>
It is a {car.color} {car.model} from {car.year}.
</p>
</>
)
}
ReactDOM.render(<Car />, document.getElementById('root'));
Da wir jetzt ein einzelnes Objekt verfolgen, müssen wir beim Rendern der Komponente auf dieses Objekt und dann auf die Eigenschaft dieses Objekts verweisen. (Bsp.: car.brand
)
Aktualisieren von Objekten und Arrays im Zustand
Wenn der Status aktualisiert wird, wird der gesamte Status überschrieben.
Was ist, wenn wir nur die Farbe unseres Autos aktualisieren möchten?
Wenn wir nur anrufen setCar({color: "blue"})
würden, würde dies die Marke, das Modell und das Jahr aus unserem Zustand entfernen.
Wir können den JavaScript-Spread-Operator verwenden, um uns zu helfen.
Beispiel:
Verwenden Sie den JavaScript-Spread-Operator, um nur die Farbe des Autos zu aktualisieren:
import { useState } from "react";
import ReactDOM from "react-dom";
function Car() {
const [car, setCar] = useState({
brand: "Ford",
model: "Mustang",
year: "1964",
color: "red"
});
const updateColor = () => {
setCar(previousState => {
return { ...previousState, color: "blue" }
});
}
return (
<>
<h1>My {car.brand}</h1>
<p>
It is a {car.color} {car.model} from {car.year}.
</p>
<button
type="button"
onClick={updateColor}
>Blue</button>
</>
)
}
ReactDOM.render(<Car />, document.getElementById('root'));
Da wir den aktuellen Wert von state benötigen, übergeben wir eine Funktion an unsere setCar
Funktion. Diese Funktion erhält den vorherigen Wert.
Wir geben dann ein Objekt zurück, verteilen die previousState
und überschreiben nur die Farbe.