Gancio di useState
reazione
Il React useState
Hook ci consente di tracciare lo stato in un componente di funzione.
Lo stato si riferisce generalmente a dati o proprietà che devono essere monitorati in un'applicazione.
ImportareuseState
Per usare useState
Hook, dobbiamo prima import
inserirlo nel nostro componente.
Esempio:
Nella parte superiore del tuo componente, import
l' useState
Hook.
import { useState } from "react";
Si noti che stiamo destrutturando poiché si useState
tratta react
di un'esportazione denominata.
Per saperne di più sulla destrutturazione, consulta la sezione ES6 .
Inizializzare useState
Inizializziamo il nostro stato richiamando useState
il nostro componente funzione.
useState
accetta uno stato iniziale e restituisce due valori:
- Lo stato attuale.
- Una funzione che aggiorna lo stato.
Esempio:
Inizializza lo stato nella parte superiore del componente della funzione.
import { useState } from "react";
function FavoriteColor() {
const [color, setColor] = useState("");
}
Si noti che, ancora una volta, stiamo destrutturando i valori restituiti da useState
.
Il primo valore, color
, è il nostro stato attuale.
Il secondo valore, setColor
, è la funzione utilizzata per aggiornare il nostro stato.
Questi nomi sono variabili che possono essere nominate come preferisci.
Infine, impostiamo lo stato iniziale su una stringa vuota: useState("")
Ottieni la certificazione!
ISCRIVITI A $95
Leggi Stato
Ora possiamo includere il nostro stato ovunque nel nostro componente.
Esempio:
Usa la variabile di stato nel componente renderizzato.
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'));
Stato di aggiornamento
Per aggiornare il nostro stato, utilizziamo la nostra funzione di aggiornamento dello stato.
Non dovremmo mai aggiornare direttamente lo stato. Es: color = "red"
non è consentito.
Esempio:
Utilizzare un pulsante per aggiornare lo stato:
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'));
Cosa può contenere lo stato
L' useState
Hook può essere utilizzato per tenere traccia di stringhe, numeri, booleani, array, oggetti e qualsiasi combinazione di questi!
Potremmo creare più hook di stato per tenere traccia dei valori individuali.
Esempio:
Crea più ganci di stato:
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'));
Oppure possiamo usare solo uno stato e includere invece un oggetto!
Esempio:
Crea un unico Hook che contiene un oggetto:
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'));
Poiché ora stiamo tracciando un singolo oggetto, dobbiamo fare riferimento a quell'oggetto e quindi alla proprietà di quell'oggetto durante il rendering del componente. (Es: car.brand
)
Aggiornamento di oggetti e array nello stato
Quando lo stato viene aggiornato, l'intero stato viene sovrascritto.
E se volessimo solo aggiornare il colore della nostra auto?
Se solo chiamassimo setCar({color: "blue"})
, questo rimuoverebbe la marca, il modello e l'anno dal nostro stato.
Possiamo usare l'operatore di diffusione JavaScript per aiutarci.
Esempio:
Usa l'operatore di diffusione JavaScript per aggiornare solo il colore dell'auto:
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'));
Poiché abbiamo bisogno del valore corrente di state, passiamo una funzione nella nostra setCar
funzione. Questa funzione riceve il valore precedente.
Restituiamo quindi un oggetto, diffondendo previousState
e sovrascrivendo solo il colore.