← Level 3 – Master

Pelajaran 5 dari 10 ⏱ 40 menit Premium

Negara: aplikasi yang mengingat

Pelajari useState – memori komponen. Aplikasi kamu mulai bereaksi terhadap klik dengan cara Bereaksi.

Mengapa variabel biasa saja tidak cukup

Di Level 2, kamu membuat penghitung dengan menulis ulang sendiri teks tombol setelah setiap klik. React melakukannya secara berbeda: kamu mengubah data, dan React menggambar ulang layar. Namun kamu harus menyerahkan datanya ke kotak khusus bernama state – jika tidak, React tidak akan melihat perubahannya.

Tunjukkan pada saya: penghitung di React

import { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <button onClick={() => setCount(count + 1)}>
      Clicked: {count}×
    </button>
  );
}

export default Counter;

Menguraikan baris yang paling penting – const [count, setCount] = useState(0);:

Dan onClick={...} adalah versi React dari addEventListener("click", ...) – tepat di dalam JSX.

Perhatikan apa yang tidak dalam kode: tidak ada getElementById, tidak ada textContent. kamu tidak mengatakan cara mengubah layar – kamu mengatakan apa yang benar sekarang (hitungan sekarang menjadi 5), dan layar akan berbaris dengan sendirinya.

Tunjukkan pada saya: negara mengontrol apa yang terlihat

Negara tidak harus hanya sekedar angka. Bagian yang dapat dilipat, dengan cara Bereaksi:

import { useState } from 'react';

function Menu() {
  const [open, setOpen] = useState(false);

  return (
    <div>
      <button onClick={() => setOpen(!open)}>
        {open ? "Hide the menu ▲" : "Show the menu ▼"}
      </button>

      {open && (
        <ul>
          <li>Monday: tomato soup with pasta</li>
          <li>Tuesday: chicken with rice</li>
          <li>Wednesday: pancakes with jam</li>
        </ul>
      )}
    </div>
  );
}

Dua trik BEJ baru:

Dan !open berarti “sebaliknya” – mengubah benar menjadi salah dan sebaliknya. Satu baris = sebuah saklar.

Giliran kamu 💪

Tambahkan dua hal dengan status ke aplikasi kamu:

  1. Bagian yang dapat diciutkan (keadaan benar/salah) yang cocok dengan proyek kamu: 🏫 menu makan siang yang dapat diciutkan · 🙋 “tampilkan/sembunyikan game favorit saya” · 🌍 daftar negara yang dapat diciutkan · ⚽ daftar nama yang dapat diciutkan.
  2. Penghitung atau pemungutan suara (status numerik): 🏫 pilih perjalanan kelas · 🙋 “berapa banyak orang yang menyapa saya hari ini” · 🌍 penghitung negara yang dikunjungi · ⚽ papan skor dengan tombol +1 pulang / +1 tandang (dua negara bagian!).
Solusi bonus: papan skor dengan dua status
import { useState } from 'react';

function Score() {
  const [home, setHome] = useState(0);
  const [away, setAway] = useState(0);

  return (
    <div className="card">
      <h3>Riverside {home} : {away} Lakeside</h3>
      <button onClick={() => setHome(home + 1)}>Home goal ⚽</button>
      <button onClick={() => setAway(away + 1)}>Away goal 😤</button>
      <button onClick={() => { setHome(0); setAway(0); }}>New match</button>
    </div>
  );
}

export default Score;

Sebuah komponen dapat memiliki kotak sebanyak yang diinginkan – masing-masing useState adalah satu.

Periksa diri kamu: Aplikasi kamu memiliki setidaknya dua tempat interaktif, dan tidak ada getElementById di mana pun dalam kode. Jika kamu sudah menguasai perubahan mental ini (“Saya mengubah datanya, bukan layarnya”), kamu sudah menguasai bagian tersulit dari React.

Apa yang bisa diambil dari pelajaran ini