Gancho de useStatereacción


El React useStateHook 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 useStategancho, primero debemos importingresarlo en nuestro componente.

Ejemplo:

En la parte superior de su componente, importel useStateHook.

import { useState } from "react";

Tenga en cuenta que estamos desestructurando useStatedesde reactque 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 useStatea 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("")


w3schools CERTIFIED . 2022

¡Obtener la certificación!

¡Complete los módulos de React, haga los ejercicios, tome el examen y obtenga la certificación w3schools!

$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 useStategancho 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 setCarfunción. Esta función recibe el valor anterior.

Luego devolvemos un objeto, extendiendo previousStatey sobrescribiendo solo el color.


Ponte a prueba con ejercicios

Ejercicio:

Complete esta declaración para realizar un seguimiento de una variable de "recuento" mediante el UseState Hook.

import { useState } from "react";

function KeepCount() {
  const [, ] = useState(0);
}