Props vs State di React: Auto Ngerti Perbedaan Krusial Biar Code Makin Mantul!

Props vs State React: Perbedaan Kritis & Implementasi Praktis

PPLG

PPLG

Penulis

02 Jun 2026
22 x dilihat

Halo gaes, lagi asik ngoding React, kan? Nah, kalau kamu udah nyemplung di dunia React, pasti sering banget dengerin istilah Props sama State. Dua-duanya ini emang inti banget buat bikin komponen React kamu interaktif dan dinamis. Tapi, kadang suka bikin misunderstanding atau malah bingung bedanya apa sih?

Santuy, ngab! Di artikel ini, kita bakal spill tuntas perbedaan krusial antara Props dan State dengan gaya yang asik, kekinian, tapi tetep deep dive secara teknis. Siap-siap auto tercerahkan biar skill React kamu makin jago!

Kenapa Props dan State Penting Banget di React?

Bayangin gini, komponen React itu kayak building block buat bikin aplikasi kamu. Nah, supaya building block ini bisa saling ngobrol, simpen data, dan berubah sesuai interaksi user, kita butuh mekanisme. Disinilah peran Props dan State jadi super vital. Mereka adalah jantungnya manajemen data di komponen React.

Yuk, langsung aja kita bedah satu-satu biar makin paham!

1. State: Si Pemilik Data yang Bisa Berubah-ubah

State itu ibarat memori internal sebuah komponen. Dia adalah kumpulan data yang dimiliki dan dikelola oleh komponen itu sendiri. Kalo datanya berubah, React bakal otomatis nge-render ulang komponennya. Ini yang bikin UI kamu jadi dinamis dan responsif.

Karakteristik Utama State:

  • Internal & Lokal: State cuma ada dan cuma bisa diakses di dalam komponen tempat dia didefinisikan.
  • Mutable (Bisa Berubah): Nah, ini poin pentingnya! State bisa diubah-ubah nilainya. Tapi, ingat ya, ngubahnya harus pakai fungsi setter yang udah disediain React (contoh: setCount kalau pakai useState). JANGAN pernah langsung ngubah state secara langsung kayak state.count = 5, itu auto error dan debug-nya bikin puyeng!
  • Memicu Re-render: Setiap kali state berubah, komponen yang memiliki state tersebut akan di-render ulang. Ini yang bikin perubahan datamu langsung keliatan di UI.
  • Kepemilikan: State itu "milik" komponen yang mendefinisikannya. Komponen lain nggak bisa langsung akses atau ngubah state komponen lain.

Kapan Pakai State? Pakai state kalau kamu butuh nyimpen data yang sifatnya private dan bisa berubah di dalam sebuah komponen. Contoh:

  • Nilai input field di form.
  • Status toggle (ON/OFF) sebuah tombol.
  • Data hasil fetching dari API yang mau ditampilin.
  • Nomor halaman (page number) di pagination.

Contoh Implementasi State dengan useState:

import React, { useState } from 'react';

function Counter() {
  // Deklarasi state 'count' dengan nilai awal 0
  const [count, setCount] = useState(0);

  const increment = () => {
    // Mengubah nilai state 'count' dengan fungsi setCount
    setCount(count + 1);
  };

  const decrement = () => {
    setCount(count - 1);
  };

  return (
    <div style={{ padding: '20px', border: '1px solid #ccc', borderRadius: '8px' }}>
      <h3>Jumlah: {count}</h3>
      <button onClick={increment} style={{ marginRight: '10px', padding: '8px 15px' }}>Tambah (+)</button>
      <button onClick={decrement} style={{ padding: '8px 15px' }}>Kurang (-)</button>
    </div>
  );
}

export default Counter;

Di contoh ini, count adalah state. Ketika tombol "Tambah (+)" atau "Kurang (-)" diklik, nilai count berubah, dan komponen Counter auto di-render ulang, nunjukkin angka terbaru. Mantap, kan?

2. Props: Si Pembawa Pesan dari Atas ke Bawah

Props (singkatan dari "properties") itu kayak argumen fungsi, tapi buat komponen React. Mereka adalah cara untuk ngirim data dari komponen induk (parent) ke komponen anak (child). Ibaratnya, parent ngasih instruksi atau data ke child-nya.

Karakteristik Utama Props:

  • Eksternal & Dibawa dari Luar: Props diterima oleh komponen dari "luar", yaitu dari komponen induk yang memanggilnya.
  • Immutable (Nggak Bisa Berubah): Ini the real deal dari Props! Begitu Props dikirim dari parent ke child, child nggak bisa mengubah nilai Props tersebut. Dia cuma bisa "membaca" data yang dikirim. Sifatnya read-only. Kalo mau diubah, yang harus ngubah adalah komponen parent-nya.
  • Aliran Data Satu Arah (Uni-directional): Data mengalir dari atas ke bawah (parent ke child). Child nggak bisa langsung ngirim data balik ke parent lewat Props.
  • Fleksibel & Reusable: Dengan Props, kamu bisa bikin komponen yang generik dan bisa dipakai ulang di banyak tempat dengan data yang berbeda-beda.

Kapan Pakai Props? Pakai Props kalau kamu perlu ngirim data dari parent ke child. Contoh:

  • Mengirim judul, deskripsi, atau gambar ke komponen Card.
  • Mengirim callback function dari parent ke child agar child bisa "memberi tahu" parent kalau ada sesuatu terjadi.
  • Mengirim styling atau class name ke komponen UI.

Contoh Implementasi Props:

import React from 'react';

// Komponen Child: Card
function Card(props) {
  return (
    <div style={{
      border: '1px solid #ddd',
      borderRadius: '8px',
      padding: '15px',
      margin: '10px',
      width: '250px',
      boxShadow: '0 2px 4px rgba(0,0,0,0.1)'
    }}>
      <h3 style={{ color: '#333' }}>{props.title}</h3> {/* Menerima props.title */}
      <p style={{ fontSize: '0.9em', color: '#666' }}>{props.description}</p> {/* Menerima props.description */}
      {props.buttonText && ( // Optional: Jika ada props.buttonText, tampilkan tombol
        <button style={{
          backgroundColor: '#007bff',
          color: 'white',
          border: 'none',
          padding: '8px 12px',
          borderRadius: '5px',
          cursor: 'pointer'
        }}>{props.buttonText}</button>
      )}
    </div>
  );
}

// Komponen Parent: App
function App() {
  return (
    <div style={{ display: 'flex', flexWrap: 'wrap', justifyContent: 'center' }}>
      <Card
        title="Kursus React JS"
        description="Belajar React dari nol sampai jago! Bikin aplikasi web modern dan interaktif."
        buttonText="Daftar Sekarang"
      />
      <Card
        title="Webinar UI/UX"
        description="Pahami dasar-dasar desain UI/UX untuk pengalaman pengguna yang lebih baik."
      /> {/* Card ini tidak punya buttonText */}
    </div>
  );
}

export default App;

Di sini, App adalah parent, dan Card adalah child. App ngirimin data title, description, dan buttonText ke Card lewat props. Komponen Card cuma bisa baca data itu dan nampilinnya. Dia nggak bisa ngubah title jadi "React JS Mantap Jiwa" dari dalem komponen Card sendiri. Auto bersih, kan kodenya?

Spill Perbedaan Krusial: State vs Props (Auto Paham!)

Biar makin jelas dan auto sat-set, yuk kita rangkum perbedaannya dalam tabel biar kamu nggak salah kaprah lagi!

Fitur Props State
Sumber Data Diterima dari komponen induk (parent). Dimiliki dan dikelola oleh komponen itu sendiri.
Sifat Data Immutable (read-only), tidak bisa diubah oleh komponen penerima. Mutable, bisa diubah oleh komponen pemilik.
Aliran Data Uni-directional (satu arah: parent -> child). Internal, mempengaruhi komponen pemilik saja.
Kepemilikan "Bukan milikku", dikirim dari luar. "Milikku sendiri", data pribadi komponen.
Perubahan Perubahan dipicu oleh komponen induk. Perubahan dipicu oleh interaksi user atau event internal.
Tujuan Umum Untuk komunikasi antar komponen (parent ke child), konfigurasi, atau kustomisasi komponen. Untuk mengelola data internal yang bisa berubah seiring waktu (interaksi user, fetch data).

Kapan Pakai Apa? (Panduan Praktis Anti Galau)

Oke, ini dia golden rules biar kamu nggak bingung lagi mau pakai Props atau State:

  1. Jika data perlu diubah oleh komponen itu sendiri (misal: hitungan, input form, status toggle): Pakai State.
  2. Jika data datang dari komponen lain (parent) dan hanya perlu ditampilkan atau digunakan tanpa diubah oleh komponen anak: Pakai Props.
  3. Jika kamu perlu bikin komponen yang bisa dipakai berkali-kali dengan data berbeda: Pasti pakai Props biar komponenmu jadi fleksibel dan reusable.
  4. Ingat prinsip "Lift State Up": Kalo ada data yang dibutuhkan oleh beberapa komponen yang beda "level" atau "posisi", biasanya state-nya "diangkat" ke parent terdekat yang berbagi kedua komponen itu, lalu dikirim ke bawah sebagai props. Ini cara biar data tetap terpusat tapi bisa dipakai bareng.
  5. Hindari Prop Drilling (kalau udah kompleks): Kalo props harus dilewatin dari parent paling atas, turun ke cucu, cicit, dst. (alias prop drilling), itu bisa bikin kode jadi susah dibaca dan di-maintain. Di kasus ini, mungkin kamu perlu mikirin solusi yang lebih canggih kayak React Context API atau Redux untuk manajemen state global. Tapi ini nanti aja ya, kalo udah jago Props dan State dasarnya.

Kesimpulan: Kunci React Ada di Pemahaman Props dan State!

Gaes, memahami Props dan State itu ibarat kamu udah megang kunci utama buat bikin aplikasi React yang keren dan interaktif. Props itu untuk ngirim data dari parent ke child yang sifatnya nggak berubah, sedangkan State itu untuk ngatur data internal yang bisa berubah di dalam komponen.

Dengan paham betul perbedaan dan kapan harus pakai masing-masing, kamu auto bisa bikin komponen yang bersih, maintainable, dan reusable. Jangan takut buat coba-coba dan explore sendiri ya! Makin banyak latihan, makin jago kamu ngoding React. Gas terus, ngab! Semoga vibes ngodingmu makin positif dan produktif!


5.0

Berikan Rating

Komentar (0)

Silakan login untuk memberikan komentar.

Login Sekarang

Belum ada komentar. Jadilah yang pertama!

Menyukai Artikel (1)