Reageer useStateHook


Die React useStateHook 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 useStatehaak te gebruik, moet ons importdit eers in ons komponent voeg.

Voorbeeld:

Aan die bokant van jou komponent, importdie useStateHook.

import { useState } from "react";

Let daarop dat ons besig is om te destruktureer useStateomdat reactdit 'n genoemde uitvoer is.

Om meer te wete te kom oor destrukturering, kyk na die ES6-afdeling .


InisialiseeruseState

Ons inisialiseer ons toestand deur useStateons funksiekomponent in te roep.

useStateaanvaar '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("")


w3schools CERTIFIED . 2022

Word gesertifiseer!

Voltooi die React-modules, doen die oefeninge, neem die eksamen en word w3schools-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 useStatehaak 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 setCarfunksie oor. Hierdie funksie ontvang die vorige waarde.

Ons gee dan 'n voorwerp terug, versprei die previousStateen oorskryf slegs die kleur.


Toets jouself met oefeninge

Oefening:

Voltooi hierdie stelling om tred te hou met 'n "telling" veranderlike deur gebruik te maak van die useState Hook.

import { useState } from "react";

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