Lompat ke konten utama
←

React Dasar

Pelajaran 2 dari 17

Komponen dan JSX

Aturan menulis JSX

Setelah pelajaran ini kamu bisa menulis JSX yang sah: satu elemen akar atau Fragment, semua tag ditutup, atribut camelCase seperti className dan htmlFor, serta aria-* dan data-* bertanda hubung.

±13 menitDiperiksa 24 Okt 2026

Latihan di pelajaran ini butuh akun gratis. Progres, kode, dan catatanmu hanya tersimpan di browser ini. Masuk untuk menyimpannya

Materi

JSX mirip HTML, tetapi aturannya lebih ketat karena setiap tag diubah menjadi objek JavaScript. Ada tiga aturan yang berlaku di setiap komponen.

Pertama, komponen mengembalikan satu elemen akar. Fungsi tidak bisa mengembalikan dua objek sekaligus tanpa membungkusnya, dan karena itu dua tag bersebelahan harus dibungkus satu tag induk. Bila pembungkus div tidak diinginkan di halaman, pakai Fragment yang ditulis <>…</>. Fragment mengelompokkan elemen tanpa menambah elemen apa pun ke DOM.

Kedua, semua tag ditutup. Tag yang di HTML boleh dibiarkan terbuka, seperti img, input, dan br, ditulis <img />, <input />, dan <br />, sedangkan setiap <li> diakhiri </li>.

Ketiga, sebagian besar atribut ditulis camelCase. Atribut JSX menjadi kunci objek JavaScript, dan nama kunci yang nyaman dipakai tidak memuat tanda hubung atau kata cadangan. class adalah kata cadangan JavaScript, jadi ditulis className; for ditulis htmlFor; stroke-width menjadi strokeWidth. Pengecualiannya atribut aria-* dan data-*, yang tetap ditulis bertanda hubung seperti di HTML.

export default function IsianKota() {
  return (
    <>
      <label className="label" htmlFor="kota">Kota</label>
      <input id="kota" aria-describedby="catatan-kota" />
      <p id="catatan-kota" data-jenis="bantuan">Contoh: Pekanbaru</p>
    </>
  );
}

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Komponen di bawah mengembalikan dua elemen bersebelahan, dan kodenya gagal diubah menjadi JavaScript. Mengapa JSX menolaknya?

export default function Harga() {
  return (
    <h3>Teh Botol</h3>
    <p>Rp5.000</p>
  );
}
Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke

Tampilkan 1 lagi