Gancho de useState
reacción
El React useState
Hook nos permite rastrear el estado en un componente de función.
El estado generalmente se refiere a datos o propiedades que deben rastrearse en una aplicación.
ImportaruseState
Para usar el useState
gancho, primero debemos import
ingresarlo en nuestro componente.
Ejemplo:
En la parte superior de su componente, import
el useState
Hook.
import { useState } from "react";
Tenga en cuenta que estamos desestructurando useState
desde react
que se trata de una exportación con nombre.
Para obtener más información sobre la desestructuración, consulte la sección ES6 .
Inicializar useState
Inicializamos nuestro estado llamando useState
a nuestro componente de función.
useState
acepta un estado inicial y devuelve dos valores:
- El estado actual.
- Una función que actualiza el estado.
Ejemplo:
Inicialice el estado en la parte superior del componente de la función.
import { useState } from "react";
function FavoriteColor() {
const [color, setColor] = useState("");
}
Tenga en cuenta que nuevamente, estamos desestructurando los valores devueltos de useState
.
El primer valor, color
, es nuestro estado actual.
El segundo valor, setColor
, es la función que se utiliza para actualizar nuestro estado.
Estos nombres son variables que pueden tener el nombre que desee.
Por último, establecemos el estado inicial en una cadena vacía: useState("")
¡Obtener la certificación!
$95 INSCRÍBETE
Estado de lectura
Ahora podemos incluir nuestro estado en cualquier parte de nuestro componente.
Ejemplo:
Utilice la variable de estado en el componente renderizado.
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'));
Estado de actualización
Para actualizar nuestro estado, usamos nuestra función de actualización de estado.
Nunca debemos actualizar directamente el estado. Ej: color = "red"
no está permitido.
Ejemplo:
Use un botón para actualizar el estado:
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'));
¿Qué puede retener el estado?
¡ El useState
gancho se puede usar para realizar un seguimiento de cadenas, números, booleanos, matrices, objetos y cualquier combinación de estos!
Podríamos crear Hooks de múltiples estados para rastrear valores individuales.
Ejemplo:
Crea ganchos de múltiples estados:
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'));
¡O simplemente podemos usar un estado e incluir un objeto en su lugar!
Ejemplo:
Cree un solo Hook que sostenga un objeto:
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'));
Dado que ahora estamos rastreando un solo objeto, debemos hacer referencia a ese objeto y luego a la propiedad de ese objeto al representar el componente. (Ej: car.brand
)
Actualización de objetos y matrices en estado
Cuando se actualiza el estado, se sobrescribe todo el estado.
¿Y si solo queremos actualizar el color de nuestro coche?
Si solo llamáramos setCar({color: "blue"})
, esto eliminaría la marca, el modelo y el año de nuestro estado.
Podemos usar el operador de propagación de JavaScript para ayudarnos.
Ejemplo:
Use el operador de propagación de JavaScript para actualizar solo el color del automóvil:
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'));
Debido a que necesitamos el valor actual de estado, pasamos una función a nuestra setCar
función. Esta función recibe el valor anterior.
Luego devolvemos un objeto, extendiendo previousState
y sobrescribiendo solo el color.