Pada artikel sebelumnya saya sudah belajar membuat project React, memahami JSX, component, dan props. Pada tahap itu, UI masih bersifat statis.
Mulai artikel ini, React akan terasa semakin menarik karena saya mulai belajar bagian penting yang membuat UI menjadi dinamis: State & Event Handling.
1. Apa Itu State dalam React?
State adalah data internal yang disimpan oleh sebuah component. Berbeda dengan props yang dikirim dari luar, state dikelola di dalam component dan dapat berubah seiring interaksi.
Ketika state berubah → React otomatis me-render ulang tampilan terkait.
React menyediakan hook bernama useState untuk membuat state.
Contoh dasar:
import { useState } from "react";
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Tambah</button>
</div>
);
}
export default Counter;
Penjelasan singkat:
-
count→ nilai state -
setCount→ fungsi untuk mengubah state -
useState(0)→ nilai awal state adalah 0
Ketika tombol diklik, angka akan bertambah.
2. Event Handling: Membuat UI Bereaksi
Event handling adalah cara React merespons aksi pengguna: klik, input, hover, submit, dll.
React menggunakan sintaks seperti HTML tetapi dengan gaya JavaScript:
-
onClick -
onChange -
onSubmit
Contoh sederhana:
<button onClick={handleClick}>Klik Saya</button>
Event handler adalah fungsi JavaScript biasa.
3. Studi Kasus Praktikal: Membuat Counter Interaktif
Mari praktik membuat component "Counter" untuk memahami konsep dengan jelas.
Langkah 1 — Buat file component
src/components/Counter.jsx
Isi file
import { useState } from "react";
function Counter() { const [value, setValue] = useState(0);
function increment() { setValue(value + 1); }
function decrement() { setValue(value - 1); }
return ( <div> <h2>Counter</h2> <p>Nilai: {value}</p> <button onClick={decrement}>-</button> <button onClick={increment}>+</button> </div> );}
export default Counter;
Langkah 2 — Panggil di App.jsx
import Counter from "./components/Counter";
function App() { return ( <div> <h1>Belajar State & Event Handling</h1> <Counter /> </div> );}
export default App;
Coba klik tombolnya — angka akan berubah.
4. Studi Kasus Tambahan: Input Form Sederhana
State juga digunakan untuk menangani form.
Buat file:
src/components/FormName.jsx
Isi file:
import { useState } from "react";function FormName() {const [name, setName] = useState("");return (<div><h2>Form Nama</h2><inputtype="text"placeholder="Masukkan nama..."value={name}onChange={(e) => setName(e.target.value)}/><p>Halo, {name || "..."}</p></div>);}export default FormName;
Penjelasan:
-
value={name}menjadikan input sebagai controlled component -
onChangemengubah state berdasarkan input pengguna
5. Kesalahan yang Sering Saya Temui
❌ State tidak berubah padahal memanggil setState
Biasanya karena:
-
menggunakan variabel state lama tanpa memanggil fungsi updater
-
salah penempatan hook (useState harus di level teratas function)
❌ Event tidak berjalan
Biasanya karena:
-
lupa menulis
onClick={} -
salah penulisan nama event (harus camelCase)
❌ Error: Invalid hook call
Terjadi jika:
-
memanggil useState bukan di dalam component
-
menggunakan React versi ganda
6. Hasil Belajar Hari Ini
Di artikel ini saya sudah mempraktikkan:
-
Apa itu state dan kenapa penting
-
Cara menggunakan useState
-
Event handling (onClick, onChange)
-
Membuat Counter interaktif
-
Membuat input form dinamis
UI React sekarang tidak hanya tampil, tapi bereaksi terhadap tindakan pengguna.
Artikel Selanjutnya
Belajar React #4 — Conditional Rendering & List Rendering
Di artikel berikutnya saya akan belajar bagaimana menampilkan daftar data, memetakan array dengan .map(), dan menampilkan UI secara kondisional.
Sampai jumpa di artikel selanjutnya! 🚀
Komentar
Posting Komentar