Lompat ke konten utama
←

React Dasar

Pelajaran 16 dari 17

Formulir, berbagi state, dan Effect

useEffect: menyelaraskan dengan sistem di luar React

Setelah pelajaran ini kamu bisa menulis Effect yang menyelaraskan komponen dengan sistem di luar React, memilih larik dependensi, menulis fungsi pembersih, dan mengenali nilai turunan yang tidak membutuhkan Effect.

±14 menitDiperiksa 24 Okt 2026

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

Materi

Sebagian kode tidak dipicu oleh klik, tetapi oleh tampilnya komponen itu sendiri: mengganti judul tab browser, berlangganan kabar dari objek di luar React, atau menyambung ke server. Kode seperti itu ditulis di Effect. useEffect menerima fungsi yang dijalankan React di akhir commit, setelah layar diperbarui.

import { useEffect, useState } from "react";

export default function PesananMasuk() {
  const [baru, setBaru] = useState(0);
  useEffect(() => {
    document.title = baru + " pesanan baru";
  }, [baru]);
  return <button onClick={() => setBaru(baru + 1)}>Pesanan masuk</button>;
}

Argumen kedua, larik dependensi, menentukan kapan Effect dijalankan ulang. Tanpa larik, Effect berjalan setelah setiap render. Dengan larik kosong [], Effect hanya berjalan saat komponen pertama kali tampil (mount). Dengan [a, b], Effect berjalan saat mount dan setiap kali a atau b berubah dibanding render sebelumnya. Setiap nilai props atau state yang dibaca Effect masuk ke larik itu.

Effect yang memasang sesuatu juga harus melepasnya. Fungsi yang dikembalikan Effect disebut fungsi pembersih: berlangganan dipasangkan dengan berhenti berlangganan, menyambung dengan memutus. React memanggil pembersih setiap kali sebelum Effect dijalankan ulang, dan sekali lagi saat komponen dilepas dari layar. Dalam Strict Mode di tahap pengembangan, React sengaja menjalankan satu siklus pasang dan bersihkan tambahan untuk menguji pembersih itu.

Tidak semua hal membutuhkan Effect. Nilai yang bisa dihitung dari props atau state, seperti total belanja atau nama lengkap, dihitung langsung saat render. Menyimpannya ke state lewat Effect menambah satu render dan membuka peluang nilai yang tidak sinkron.

Latihan

0/3 lulus

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

Latihan 3 dari 3

Komponen di bawah menampilkan total yang benar. Mengapa dokumentasi React meminta nilai seperti total ditulis tanpa useEffect?

function Ringkasan({ belanja }) {
  const [total, setTotal] = useState(0);
  useEffect(() => {
    setTotal(belanja.reduce((n, b) => n + b.harga * b.jumlah, 0));
  }, [belanja]);
  return <p>Total {total}</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