Main Menu

Belajar React Dasar #10: useEffect


👍 0 ❤️ 0 💡 0 🔥 0 🙌 0 🥳 0
Belajar React Dasar #10: useEffect

Halo teman-teman semuanya, pada artikel sebelumnya kita sudah belajar tentang Form di React, bagaimana cara membuat controlled dan uncontrolled component.

Pada artikel kali ini, kita akan membahas salah satu hook paling penting di React, yaitu useEffect. Hook ini sangat berguna untuk menangani efek samping (side effect) di dalam component.

Apa Itu useEffect?

useEffect adalah hook bawaan React yang digunakan untuk menjalankan kode ketika:

  • Component pertama kali dirender (mount).
  • Component diperbarui (update).
  • Component dihapus (unmount).

Contoh kasus yang biasa ditangani dengan useEffect:

  • Mengambil data dari API.
  • Menjalankan event listener.
  • Mengatur timer atau interval.
  • Mengupdate title halaman.

Sintaks Dasar useEffect

useEffect(() => {

  // kode yang dijalankan
  
}, [dependencies]);
  • Fungsi pertama (callback) → berisi kode yang akan dijalankan.
  • Array dependencies → menentukan kapan efek dijalankan.

useEffect Tanpa Dependencies

Jika kita tidak menuliskan dependencies, maka efek akan dijalankan setiap kali component dirender ulang.

import { useState, useEffect } from "react";

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

  useEffect(() => {
    console.log("Component dirender ulang");
  });

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

export default App;

Setiap kali kita klik tombol, useEffect akan dijalankan ulang.

useEffect dengan Array Kosong []

Jika kita memberikan array kosong sebagai dependencies, maka efek hanya dijalankan sekali, yaitu saat component pertama kali muncul (mount).

import { useEffect } from "react";

function App() {
  useEffect(() => {
    console.log("Component pertama kali dimuat");
  }, []);

  return <h1>Hello React</h1>;
}

export default App;

Contoh penggunaan: memanggil API hanya sekali ketika aplikasi dijalankan.

useEffect dengan Dependencies

Jika kita menambahkan dependencies, maka efek hanya dijalankan ketika nilai dependencies berubah.

import { useState, useEffect } from "react";

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

  useEffect(() => {
    console.log(`Count berubah menjadi: ${count}`);
  }, [count]);

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

export default App;

Penjelasan:

  • useEffect hanya berjalan ketika count berubah.
  • Jika ada state lain, perubahan state itu tidak memicu efek ini.

Membersihkan Efek (Cleanup)

Kadang kita perlu membersihkan efek sebelum component dihapus. Ini bisa dilakukan dengan return function di dalam useEffect.

import { useEffect } from "react";

function App() {
  useEffect(() => {
    const interval = setInterval(() => {
      console.log("Interval berjalan...");
    }, 1000);

    // cleanup: dijalankan ketika component di-unmount
    return () => {
      clearInterval(interval);
      console.log("Interval dihentikan");
    };
  }, []);

  return <h1>Lihat console untuk interval</h1>;
}

export default App;

Penjelasan:

  • Kita membuat interval yang berjalan setiap detik.
  • Saat component dihapus, fungsi cleanup akan dijalankan untuk menghentikan interval.

Kesimpulan

Pada artikel ini, kita sudah belajar tentang useEffect, hook yang digunakan untuk menangani efek samping di React.

Kita sudah mencoba useEffect tanpa dependencies, dengan array kosong, dengan dependencies tertentu, serta cara melakukan cleanup.

Di artikel berikutnya, kita akan membahas tentang useRef, yaitu hook untuk menyimpan nilai yang tidak ikut memicu re-render, serta mengakses elemen DOM secara langsung.

Terima kasih


Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami