Reageer useState
Hook
Die React useState
Hook stel ons in staat om toestand in 'n funksie komponent op te spoor.
Staat verwys gewoonlik na data of eienskappe wat in 'n toepassing opgespoor moet word.
Invoer useState
Om die useState
haak te gebruik, moet ons import
dit eers in ons komponent voeg.
Voorbeeld:
Aan die bokant van jou komponent, import
die useState
Hook.
import { useState } from "react";
Let daarop dat ons besig is om te destruktureer useState
omdat react
dit 'n genoemde uitvoer is.
Om meer te wete te kom oor destrukturering, kyk na die ES6-afdeling .
InisialiseeruseState
Ons inisialiseer ons toestand deur useState
ons funksiekomponent in te roep.
useState
aanvaar 'n aanvanklike toestand en gee twee waardes terug:
- Die huidige toestand.
- 'n Funksie wat die staat opdateer.
Voorbeeld:
Inisialiseer toestand aan die bokant van die funksiekomponent.
import { useState } from "react";
function FavoriteColor() {
const [color, setColor] = useState("");
}
Let op dat ons weer die teruggekeerde waardes van useState
.
Die eerste waarde, color
, is ons huidige toestand.
Die tweede waarde, setColor
, is die funksie wat gebruik word om ons toestand op te dateer.
Hierdie name is veranderlikes wat enigiets genoem kan word wat jy wil hê.
Laastens stel ons die aanvanklike toestand op 'n leë string:useState("")
Word gesertifiseer!
$95 INSKRIF
Lees Staat
Ons kan nou ons staat enige plek by ons komponent insluit.
Voorbeeld:
Gebruik die toestandsveranderlike in die gelewerde komponent.
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'));
Dateer staat op
Om ons staat op te dateer, gebruik ons ons staatopdateringsfunksie.
Ons moet nooit die staat direk opdateer nie. Bv: color = "red"
word nie toegelaat nie.
Voorbeeld:
Gebruik 'n knoppie om die toestand op te dateer:
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 staat hou
Die useState
haak kan gebruik word om tred te hou met snare, getalle, booleans, skikkings, voorwerpe en enige kombinasie hiervan!
Ons kan verskeie staatshake skep om individuele waardes op te spoor.
Voorbeeld:
Skep verskeie toestandhake:
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 ons kan net een toestand gebruik en eerder 'n voorwerp insluit!
Voorbeeld:
Skep 'n enkele haak wat 'n voorwerp hou:
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'));
Aangesien ons nou 'n enkele voorwerp naspoor, moet ons na daardie voorwerp verwys en dan die eienskap van daardie voorwerp wanneer die komponent weergegee word. (Bv: car.brand
)
Opdatering van voorwerpe en skikkings in staat
Wanneer staat opgedateer word, word die hele staat oorskryf.
Wat as ons net die kleur van ons motor wil opdateer?
As ons net bel setCar({color: "blue"})
, sal dit die handelsmerk, model en jaar uit ons staat verwyder.
Ons kan die JavaScript-verspreidingsoperateur gebruik om ons te help.
Voorbeeld:
Gebruik die JavaScript-verspreidingsoperateur om slegs die kleur van die motor op te dateer:
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 ons die huidige waarde van staat nodig het, gee ons 'n funksie in ons setCar
funksie oor. Hierdie funksie ontvang die vorige waarde.
Ons gee dan 'n voorwerp terug, versprei die previousState
en oorskryf slegs die kleur.