Reageerhaak useState
_
Met de React useState
Hook kunnen we de status in een functiecomponent volgen.
Staat verwijst over het algemeen naar gegevens of eigenschappen die in een toepassing moeten worden gevolgd.
ImporterenuseState
Om de useState
Hook te gebruiken, moeten we import
deze eerst in onze component plaatsen.
Voorbeeld:
Bovenaan je component, import
de useState
Hook.
import { useState } from "react";
Merk op dat we aan het destructureren zijn useState
omdat react
het een benoemde export is.
Raadpleeg de sectie ES6 voor meer informatie over destructie .
InitialiserenuseState
We initialiseren onze status door useState
onze functiecomponent aan te roepen.
useState
accepteert een beginstatus en retourneert twee waarden:
- De huidige staat.
- Een functie die de status bijwerkt.
Voorbeeld:
Initialiseer de status bovenaan de functiecomponent.
import { useState } from "react";
function FavoriteColor() {
const [color, setColor] = useState("");
}
Merk op dat we nogmaals de geretourneerde waarden van useState
.
De eerste waarde, color
, is onze huidige staat.
De tweede waarde, setColor
, is de functie die wordt gebruikt om onze status bij te werken.
Deze namen zijn variabelen die elke gewenste naam kunnen krijgen.
Ten slotte stellen we de beginstatus in op een lege tekenreeks:useState("")
Gecertificeerd!
$95 INSCHRIJVEN
Staat lezen
We kunnen onze staat nu overal in onze component opnemen.
Voorbeeld:
Gebruik de state-variabele in de gerenderde component.
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 bijwerken
Om onze staat bij te werken, gebruiken we onze functie voor het bijwerken van de staat.
We mogen de status nooit rechtstreeks bijwerken. Voorbeeld: color = "red"
is niet toegestaan.
Voorbeeld:
Gebruik een knop om de status bij te werken:
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'));
Wat kan de staat bevatten?
De useState
Hook kan worden gebruikt om strings, getallen, booleans, arrays, objecten en elke combinatie hiervan bij te houden!
We kunnen meerdere state Hooks maken om individuele waarden bij te houden.
Voorbeeld:
Maak meerdere staat 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'));
Of we kunnen slechts één staat gebruiken en in plaats daarvan een object opnemen!
Voorbeeld:
Maak een enkele haak die een object vasthoudt:
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'));
Omdat we nu een enkel object volgen, moeten we naar dat object verwijzen en vervolgens naar de eigenschap van dat object bij het renderen van de component. (Bijvoorbeeld: car.brand
)
Objecten en arrays in status bijwerken
Wanneer de status wordt bijgewerkt, wordt de hele status overschreven.
Wat als we alleen de kleur van onze auto willen bijwerken?
Als we alleen zouden bellen setCar({color: "blue"})
, zou dit het merk, model en jaar uit onze staat verwijderen.
We kunnen de JavaScript-spread-operator gebruiken om ons te helpen.
Voorbeeld:
Gebruik de JavaScript-spread-operator om alleen de kleur van de auto bij te werken:
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'));
Omdat we de huidige waarde van toestand nodig hebben, geven we een functie door aan onze setCar
functie. Deze functie krijgt de vorige waarde.
We retourneren dan een object, verspreiden de previousState
en overschrijven alleen de kleur.