Komponen Pertamamu — React

Coba liat aplikasi Tokopedia di HP. Ada navbar atas, search bar, banner promo, kartu produk yang berderet, footer. Bayangin tiap bagian itu ditulis terpisah seb

Coba liat aplikasi Tokopedia di HP. Ada navbar atas, search bar, banner promo, kartu produk yang berderet, footer. Bayangin tiap bagian itu ditulis terpisah sebagai potongan kode mandiri — bisa dipake ulang di halaman lain, di-test sendiri, di-update tanpa ganggu yang lain. Itu inti komponen di React: building block UI yang bisa dipake berkali-kali, layaknya balok Lego. Tombol di header, tombol di form, tombol di footer — kalau cuma satu komponen <Button>, ubah sekali = update di mana-mana.

💡 Filosofi penting. Satu komponen = satu tanggung jawab (Single Responsibility Principle). <UserCard> cuma nampilin data user. <UserAvatar> cuma render foto profil. Komponen yang ngerjain 10 hal sekaligus = bug magnet + susah test. Pecah jadi yang lebih kecil + fokus.

Function Component

function Greeting() {
  return <p>Selamat datang!</p>
}

function App() {
  return (
    <div>
      <Greeting />
      <Greeting />
      <Greeting />
    </div>
  )
}

Tiga <Greeting /> di atas render tiga paragraf identik. Sekali tulis, dipake berkali-kali — itu kekuatan komponen.

Aturan Penting

🎭 Analogi sehari-hari

Komponen React itu kayak resep masakan yang dibukukan. Resep nasi goreng tinggal satu tulisan — mau masak buat 1 orang atau 100 orang, resepnya tetap satu yang sama. Bisa dimodifikasi (<NasiGoreng pedas="extra" />) tanpa nulis ulang resep dasarnya. Tukar bahan utama (parameter berbeda), beda hasil — tapi STRUKTUR resepnya konsisten. Komponen di React = resep UI yang bisa dipake ulang berkali-kali, tinggal kasih parameter beda (pelajaran berikutnya: Props).

⚠️ Jebakan yang sering ditemui

🎯 Pecah komponen — kapan dan seberapa kecil?

  • Bisa dipake ulang di tempat lain → wajib pisahin (<Button>, <Card>, <Avatar>)
  • Punya state/logika sendiri → pisahin biar gak gemuk parent (<SearchBox>, <Modal>)
  • JSX > 150 baris → tanda harus dipecah (kebanyakan tanggung jawab)
  • Cuma 5 baris JSX simple yang gak dipake ulang → biarin inline, jangan over-engineer

Aturan praktis: pecah saat reuse + saat ukuran membesar. JANGAN pecah cuma karena "biar rapi" — terlalu banyak komponen kecil = navigasi file ribet.

TL;DR: Komponen = building block UI di React, bisa dipake ulang. Function component = fungsi JS yang return JSX. Nama WAJIB PascalCase (<Button> ✓, <button> ✗ — React anggap HTML). Single Responsibility — satu komponen, satu tugas. Define di top-level file (jangan nest komponen dalam komponen lain — bug + perf). Pecah saat reuse atau saat membesar > ~150 baris JSX.

Yang akan kamu pelajari