DIPERBARUI: 2026-11-06
[B2-M1]Menengahā± 35 Mnt Baca + 50 Mnt Praktik

Model Mental React 19: State, Props, Re-rendering & Komposisi

Merancang Komponen Modular yang Bersih dari Prop Drilling dan Re-render Liar

BAGIKAN MODUL:
[KONTRAK HASIL BELAJAR // B2-M1]Standar Kompetensi Industri
ā± 35 Mnt Bacaā€¢āš” 50 Mnt Praktik•Lulus: ≄ 80/100 Poin

01. Target Pembelajar & Prasyarat

Developer yang ingin menguasai React modern tanpa mitos.

02. Kompetensi Konseptual (Level 1–2)

  • āœ“Menjelaskan siklus render React: Trigger -> Render -> Commit.

03. Kompetensi Praktis & Artefak Nyata (Level 3–4)

  • āœ“Membangun hierarki komponen yang mengisolasi re-render ke elemen terkecil.
Artefak yang Dibangun: Komponen kalkulator interaktif terisolasi `CounterIslands.tsx`.

04. Aplikasi Nyata & Verifikasi

Penerapan Industri: Komponen interaktif kalkulator pesanan katalog Z-Automation.

Metode Verifikasi: Memeriksa React DevTools Profiler untuk memastikan komponen induk tidak re-render saat anak berubah.

[BAGIAN 01 // MASALAH & URGENSI ARSITEKTURAL]

Mengapa Subjek Ini Krusial dalam Rekayasa Nyata?

Pahami bagaimana React 19 menyinkronkan state dengan DOM, peran immutability, pemisahan container vs presentational component, dan optimalisasi render.

Dalam lingkungan produksi, kegagalan memahami batas-batas arsitektur sistem sering kali menyebabkan bug yang sulit dilacak, pemborosan biaya komputasi, atau antarmuka yang lambat bagi pengguna.

[BAGIAN 02 // MEKANISME DI BALIK LAYAR]

Bagaimana Sistem Sebenarnya Bekerja di Tingkat Protokol

Siklus Render: Trigger, Render & Commit

Banyak developer mengira state React berubah seketika selayaknya variabel JavaScript biasa. Faktanya, memanggil setState seperti meminta giliran render berikutnya. React menjadwalkan pembaruan, mengeksekusi fungsi komponen (Render), dan mengaplikasikan perubahan minimal ke browser DOM (Commit).

[DIAGRAM TEKNIS SVG INTERAKTIF // DIAG-06]

Batas Arsitektur Server vs Client di Next.js 16 App Router

LANGKAH 1 DARI 4
ENTITAS AKTIF:Klien -> Server Next.js
01
02
03
04

Browser meminta URL /edukasi-demo/paket-01 melalui HTTP GET.

[LIVE PAYLOAD INSPECTOR]JSON 2026
{
  "method": "GET",
  "path": "/edukasi-demo/paket-01",
  "headers": {
    "accept": "text/html"
  }
}
[BAGIAN 03 // MATRIKS KESALAHPAHAMAN]

Koreksi Asumsi Umum vs Realitas Rekayasa

ƗASUMSI KELIRU

ā€œRe-render di React selalu berarti memperbarui seluruh elemen DOM asli.ā€

āœ“REALITAS SISTEM

React hanya memanggil fungsi komponen untuk menghasilkan Virtual DOM baru, lalu melakukan diffing untuk hanya memperbarui node DOM yang berubah (Commit Phase).

[BAGIAN 04 // LABORATORIUM PRAKTIS & KODE]

Implementasi Langkah-demi-Langkah

Hasil akhir yang diharapkan: Komponen React yang mengisolasi input tanpa membebani komponen induk.

STRUKTUR PROYEK DIREKOMENDASIKAN:
lab-b2-m1/
└── IsolatedState.tsx

1Implementasi Komponen Reaktif Bersih

Komponen dengan state lokal independen.

IsolatedState.tsx•tsx
āœ“Tested Successfully
LINGKUNGAN TERUJI: React 19 Valid14 BARIS KODE
1"use client";
2import React, { useState } from "react";
3
4export function CounterBadge() {
5 const [count, setCount] = useState(0);
6 return (
7 <button
8 onClick={() => setCount(c => c + 1)}
9 style={{ padding: "8px 16px", background: "#1A2FFB", color: "#FFF", borderRadius: "6px" }}
10 >
11 Jumlah Klik: {count}
12 </button>
13 );
14}
KEPUTUSAN ARSITEKTURAL UTAMA:
• Menggunakan functional state update setCount(c => c + 1): Mencegah race condition ketika state diperbarui beberapa kali secara batch.
PERINTAH EKSEKUSI TERMINAL:
$ Diuji di Next.js App Router.
OUTPUT YANG DIHARAPKAN:
Tombol yang memperbarui angka secara reaktif.
[BAGIAN 05 // PANDUAN TROUBLESHOOTING & TANTANGAN]

Mengantisipasi Masalah Umum & Tantangan Ekstensi

Pesan Error: State tidak update
Penyebab: Mutasi langsung state
Solusi Eksak: Selalu gunakan setter function dengan nilai baru (immutability).
⚔ TANTANGAN EKSTENSI MANDIRI:

Tambahkan tombol Reset dengan konfirmasi.

[RUBRIK EVALUASI KOMPETENSI 100 POIN // B2-M1]

Uji Kompetensi Mandiri & Verifikasi Hasil

Standar kelulusan Z-Automation mewajibkan skor minimum 80 / 100 Poin dengan komponen Implementasi Praktis minimal 21 / 35 Poin (60%). Jawab soal diagnostik dan centang hasil pengujian praktis Anda.

BAGIAN A // PERTANYAAN DIAGNOSTIK KONSEPTUAL & TEKNIS (40 POIN)

01.Mengapa kita tidak boleh melakukan mutasi array langsung seperti 'state.push(item)' di React?

BAGIAN B // DAFTAR PERIKSA HASIL IMPLEMENTASI PRAKTIS (35 POIN — MIN. 21 POIN)

Centang item di bawah ini hanya jika Anda telah menjalankan kode di komputer Anda dan mengamati output yang benar:

Lanjutkan Menggulir
untuk Eksplorasi
Edukasi & Lab
Halaman Selanjutnya