Cara Menghubungkan State dan Props agar Komponen Lebih Dinamis

Cara Menghubungkan State dan Props agar Komponen Lebih Dinamis
Photo by Sergey Zolkin / Unsplash

State dan Props, Apa Bedanya?

Ketika membangun aplikasi React, kita sering mendengar dua istilah penting: State dan Props. Dua konsep ini sangat penting untuk membuat komponen lebih dinamis dan fleksibel.

šŸ“Œ Perbedaan utama antara State dan Props:

  • State ā†’ Data lokal dalam sebuah komponen yang bisa berubah.
  • Props ā†’ Data yang dikirim dari komponen induk ke komponen anak.

Agar aplikasi kita lebih modular dan mudah dikelola, kita perlu menghubungkan State dan Props dengan cara yang efektif. Artikel ini akan membahas bagaimana mengelola dan menghubungkan state dengan props untuk membuat komponen React lebih interaktif!

1. Bagaimana State Mengontrol Komponen?

State digunakan untuk menyimpan data internal dalam komponen dan memperbaruinya saat ada perubahan. Mari kita lihat contoh sederhana:

import React, { useState } from 'react';

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

  return (
    <div>
      <h2>Counter: {count}</h2>
      <button onClick={() => setCount(count + 1)}>Tambah</button>
    </div>
  );
}

export default Counter;

šŸ“Œ Penjelasan:

  • useState(0) ā†’ Inisialisasi state dengan nilai awal 0.
  • setCount(count + 1) ā†’ Memperbarui state saat tombol diklik.
  • Setiap kali state berubah, komponen akan re-render dengan nilai terbaru.

āœ… State cocok digunakan untuk:

  • Menyimpan data sementara yang berubah seiring waktu (contoh: jumlah klik, status modal, input pengguna).
  • Mengontrol perilaku komponen berdasarkan perubahan data internal.

2. Mengirim State sebagai Props ke Komponen Anak

Agar lebih modular, kita bisa mengirim state dari komponen induk ke komponen anak melalui props.

šŸ“Œ Contoh State sebagai Props

import React, { useState } from 'react';
import CounterDisplay from './CounterDisplay';

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

  return (
    <div>
      <CounterDisplay count={count} />
      <button onClick={() => setCount(count + 1)}>Tambah</button>
    </div>
  );
}

export default Counter;

šŸ“Œ Di komponen anak (CounterDisplay.js):

import React from 'react';

function CounterDisplay({ count }) {
  return <h2>Counter: {count}</h2>;
}

export default CounterDisplay;

āœ… Keuntungan menggunakan props untuk mengirim state:

  • Memisahkan logika dan tampilan komponen agar lebih bersih dan modular.
  • Mudah digunakan kembali (reusable) di berbagai bagian aplikasi.
  • Membantu mengelola state secara lebih terstruktur.

3. Menghubungkan State dan Props untuk Event Handling

Selain mengirim data ke komponen anak, kita juga bisa mengirim fungsi untuk mengubah state dari komponen anak!

šŸ“Œ Contoh Mengirim State dan Event Handler sebagai Props

import React, { useState } from 'react';
import CounterButton from './CounterButton';

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

  return (
    <div>
      <h2>Counter: {count}</h2>
      <CounterButton onIncrement={() => setCount(count + 1)} />
    </div>
  );
}

export default Counter;

šŸ“Œ Di komponen anak (CounterButton.js):

import React from 'react';

function CounterButton({ onIncrement }) {
  return <button onClick={onIncrement}>Tambah</button>;
}

export default CounterButton;

āœ… Keuntungan mengirim event handler melalui props:

  • Komponen anak bisa mengubah state yang dimiliki oleh komponen induk.
  • Meningkatkan modularitas dan menghindari duplikasi kode.

āŒ Kesalahan umum:

<button onClick={setCount(count + 1)}>Tambah</button> āŒ

šŸšØ Salah! Jangan panggil fungsi langsung di onClick, harus berupa callback:

<button onClick={() => setCount(count + 1)}>Tambah</button> āœ…

4. Menggunakan Props Default untuk Nilai Awal

Kadang kita ingin memberikan nilai default pada props jika tidak ada nilai yang dikirim dari komponen induk.

šŸ“Œ Contoh Default Props

function CounterDisplay({ count = 0 }) {
  return <h2>Counter: {count}</h2>;
}

āœ… Sekarang jika count tidak diberikan, maka akan otomatis bernilai 0!

šŸ“Œ Kapan menggunakan default props?

  • Jika ada nilai yang harus selalu ada.
  • Untuk menghindari error jika props tidak dikirimkan.

5. Kesimpulan

āœ… Gunakan state untuk menyimpan data internal yang berubah.
āœ… Gunakan props untuk mengirim data dari komponen induk ke anak.
āœ… Gunakan event handler dalam props untuk mengubah state dari komponen anak.
āœ… Gunakan default props untuk menghindari nilai kosong atau undefined.

Dengan menghubungkan state dan props dengan benar, kita bisa membuat komponen yang lebih modular, fleksibel, dan mudah dikelola. Mulai terapkan teknik ini di proyek React-mu sekarang!