Bereaksi useStateKait


React useStateHook memungkinkan kita untuk melacak status dalam komponen fungsi.

Status umumnya mengacu pada data atau properti yang perlu dilacak dalam suatu aplikasi.


Impor useState

Untuk menggunakan useStateHook, pertama-tama kita perlu importmemasukkannya ke dalam komponen kita.

Contoh:

Di bagian atas komponen Anda, importHook useState.

import { useState } from "react";

Perhatikan bahwa kami sedang mendestrukturisasi useStatedari reactkarena ini adalah ekspor bernama.

Untuk mempelajari lebih lanjut tentang destrukturisasi, lihat bagian ES6 .


Inisialisasi useState

Kami menginisialisasi status kami dengan memanggil useStatekomponen fungsi kami.

useState menerima keadaan awal dan mengembalikan dua nilai:

  • Keadaan saat ini.
  • Fungsi yang memperbarui status.

Contoh:

Inisialisasi status di bagian atas komponen fungsi.

import { useState } from "react";

function FavoriteColor() {
  const [color, setColor] = useState("");
}

Perhatikan bahwa sekali lagi, kami merusak nilai yang dikembalikan dari useState.

Nilai pertama, color, adalah status kita saat ini.

Nilai kedua, setColor, adalah fungsi yang digunakan untuk memperbarui status kita.

Nama-nama ini adalah variabel yang dapat diberi nama apa pun yang Anda inginkan.

Terakhir, kami menetapkan status awal ke string kosong: useState("")


w3schools CERTIFIED . 2022

Dapatkan Sertifikasi!

Selesaikan modul React, kerjakan latihannya, ikuti ujiannya, dan dapatkan sertifikasi w3schools!!

$95 DAFTAR

Baca Negara

Kami sekarang dapat memasukkan status kami di mana saja di komponen kami.

Contoh:

Gunakan variabel status dalam komponen yang dirender.

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'));


Perbarui Status

Untuk memperbarui status kami, kami menggunakan fungsi pembaru status kami.

Kita tidak boleh secara langsung memperbarui status. Contoh: color = "red"tidak diperbolehkan.

Contoh:

Gunakan tombol untuk memperbarui status:

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'));


Apa yang Dapat Ditahan Negara?

Hook useStatedapat digunakan untuk melacak string, angka, boolean, array, objek, dan kombinasi dari semuanya!

Kita dapat membuat beberapa Kait status untuk melacak nilai individual.

Contoh:

Buat beberapa Kait status:

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'));

Atau, kita bisa menggunakan satu status dan memasukkan objek saja!

Contoh:

Buat satu Hook yang menampung objek:

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'));

Karena kita sekarang melacak satu objek, kita perlu mereferensikan objek itu dan kemudian properti objek itu saat merender komponen. (Misalnya: car.brand)


Memperbarui Objek dan Array dalam Status

Saat status diperbarui, seluruh status akan ditimpa.

Bagaimana jika kita hanya ingin memperbarui warna mobil kita?

Jika kami hanya menelepon setCar({color: "blue"}), ini akan menghapus merek, model, dan tahun dari negara bagian kami.

Kita dapat menggunakan operator penyebaran JavaScript untuk membantu kita.

Contoh:

Gunakan operator penyebaran JavaScript untuk memperbarui hanya warna mobil:

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'));

Karena kita membutuhkan nilai keadaan saat ini, kita melewatkan sebuah fungsi ke dalam setCarfungsi kita. Fungsi ini menerima nilai sebelumnya.

Kami kemudian mengembalikan objek, menyebarkan previousStatedan menimpa hanya warnanya.


Uji Diri Anda Dengan Latihan

Olahraga:

Lengkapi pernyataan ini untuk melacak variabel "hitungan" menggunakan useState Hook.

import { useState } from "react";

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