node.js from zero to zorro
Friday, May 29, 2026
react router
Pindah-Pindah Halaman:
Praktikum React Router DOM dari Nol
Belajar navigasi multi-halaman di React pakai React Router DOM — dari konsep dasar sampai nested routes, lengkap dengan kode yang bisa langsung kamu jalankan.
Pernah nggak kamu ngunjungi sebuah website dan sadar kalau URL-nya berubah setiap kali kamu klik menu — tapi halamannya nggak reload sama sekali? Rasanya mulus banget, kayak pakai aplikasi native. Nah, itulah sihir React Router DOM. Kalau kamu sedang belajar React Router DOM routing halaman, kamu lagi berada di salah satu topik terpenting dalam ekosistem React.
Di artikel ke-9 dari Seri Belajar React: React from Zero to Zorro ini, kita bakal praktek langsung bikin navigasi multi-halaman yang smooth, mulai dari install library-nya sampai bikin nested routes. Siap? Kita mulai! 🚀
React Router DOM adalah library yang memungkinkan React mengelola navigasi antar halaman secara client-side — artinya perpindahan halaman terjadi di browser tanpa memuat ulang file HTML dari server. Hasilnya? Navigasi yang super cepat dan pengalaman pengguna yang mulus seperti aplikasi mobile.
🗺️ Apa Itu Routing dan Kenapa React Router DOM Dibutuhkan?
Bayangkan kamu masuk ke sebuah mall besar. Setiap toko punya alamat — lantai 1 toko A, lantai 2 toko B. Kamu bisa langsung pergi ke toko manapun tanpa harus memutar ulang dari pintu utama setiap kali. Nah, routing di React bekerja persis seperti itu. Setiap URL adalah "alamat" yang menunjuk ke komponen tertentu.
Masalahnya, React sendiri hanyalah library untuk membangun UI — bukan framework yang sudah dilengkapi sistem routing. Di sinilah React Router DOM routing halaman masuk sebagai solusinya. Library ini menjadi standar industri untuk navigasi di aplikasi React.
React Router DOM adalah library React ketiga paling banyak diunduh di npm — dengan lebih dari 12 juta unduhan per minggu. Hampir setiap project React nyata di dunia kerja menggunakannya. Belajar ini berarti kamu makin siap kerja!
| Aspek | Routing Tradisional (MPA) | React Router DOM (SPA) |
|---|---|---|
| Kecepatan Navigasi | 🐢 Lambat (reload penuh) | ⚡ Sangat cepat (tanpa reload) |
| Pengalaman Pengguna | Terasa putus-putus | Mulus seperti aplikasi |
| State Tetap Ada | ❌ Hilang setiap pindah halaman | ✅ Bisa dipertahankan |
| Performa Awal | ✅ Lebih ringan di awal | ⚡ Sedikit lebih berat tapi bisa dioptimasi |
⚙️ Instalasi dan Setup React Router DOM
Sebelum bisa pakai React Router DOM routing halaman, kamu perlu menginstalnya terlebih dahulu. Pastikan kamu sudah punya project React (misalnya pakai Vite atau Create React App). Ikuti langkah berikut:
src/main.jsx dan tambahkan BrowserRouter:Routes dan Route untuk memetakan URL ke komponen:Biasakan membuat folder src/pages/ khusus untuk komponen halaman dan src/components/ untuk komponen yang digunakan ulang. Struktur folder yang rapi = proyek yang mudah di-maintain!
🔗 Link, NavLink, dan useNavigate — Navigasi yang Sesungguhnya
Setelah route didefinisikan, kamu perlu cara untuk berpindah antar halaman. Di React Router DOM routing halaman, ada tiga cara utama untuk melakukan ini, dan masing-masing punya kegunaan yang berbeda.
<Link to="/about"><a href> biasa. Digunakan untuk navigasi di dalam konten artikel, tombol, atau tautan umum. Tidak menyebabkan reload halaman.<NavLink to="/about">active saat URL cocok. Sempurna untuk menu navigasi yang perlu menunjukkan halaman aktif.useNavigate()Jangan pernah pakai tag <a href="..."> biasa untuk navigasi internal di React. Ini akan menyebabkan halaman reload penuh dan menghancurkan semua keuntungan SPA yang sudah kamu bangun!
🏗️ Dynamic Routes dan useParams — Halaman yang Lebih Pintar
Bayangkan kamu membangun blog. Kamu punya 100 artikel, tapi tidak mungkin kamu mendefinisikan 100 route secara manual, kan? Di sinilah dynamic routing dalam React Router DOM routing halaman menyelamatkan kamu. Kamu cukup definisikan satu route dengan parameter dinamis.
React Router DOM versi 6 ke atas sudah sangat berbeda dari versi 5. Kalau kamu menemukan tutorial lama yang masih pakai Switch, itu adalah sintaks versi lama. Di v6+, Switch diganti dengan Routes.
📦 Nested Routes & Layout — Struktur Halaman yang Profesional
Fitur paling powerful dari React Router DOM routing halaman adalah nested routes (routes bersarang). Analoginya seperti sebuah gedung perkantoran: gedung (layout utama) tetap sama, hanya isi ruangan (konten halaman) yang berganti. Header dan sidebar kamu bisa tetap terlihat sementara hanya area konten yang berubah.
Komponen <Outlet /> adalah kunci dari nested routes. Anggap saja ini sebagai "lubang" di layout yang akan diisi oleh child route yang sedang aktif. Tanpa Outlet, child routes tidak akan pernah muncul!
Kamu Sudah Jago Routing, Jago Juga!
Di artikel ini kamu sudah belajar hal-hal penting tentang React Router DOM routing halaman:
Sekarang giliran kamu untuk mencoba sendiri! Bikin project kecil dengan 3-4 halaman dan praktikkan semua yang sudah kamu pelajari. Jangan lupa share hasilnya di kolom komentar ya — saya penasaran dengan kreasi kamu! 👇
react project akhir
Project Akhir: Bangun Aplikasi
Full-Feature React
dari Nol Sampai Deploy!
Saatnya semua ilmu dari 15 artikel sebelumnya dibuktikan. Kita bangun satu aplikasi React CRUD nyata, lalu deploy ke Vercel atau Netlify — sekarang juga.
Pernah nggak kamu nonton tutorial React berjam-jam, hafal teori, paham konsep — tapi begitu disuruh bikin aplikasi sendiri, langsung blank? Kalau pernah, tenang. Ini artikel terakhir dari Seri Belajar React: React From Zero to Zorro, dan kita akan menutupnya dengan cara paling epic: bikin project React CRUD lengkap, lalu deploy ke Vercel atau Netlify supaya dunia bisa lihat hasil kerja kerasmu.
Nggak ada teori kosong di sini. Semua yang kita bahas — dari setup project sampai tombol deploy — bisa langsung kamu praktikkan sekarang. Siap? Gas! 🚀
Apa Itu Project React CRUD dan Kenapa Ini Penting Banget?
Bayangkan sebuah toko buku. Pemiliknya butuh bisa menambah buku baru, melihat daftar buku, mengedit informasi harga, dan menghapus buku yang sudah habis stok. Itulah CRUD — Create, Read, Update, Delete — empat operasi fundamental yang jadi pondasi hampir semua aplikasi web di dunia nyata.
→ Aplikasi React CRUD = komponen UI + state management + deploy ke publik
Kalau kamu bisa bikin aplikasi React CRUD yang berfungsi penuh dan bisa diakses siapa saja lewat internet, itu artinya kamu sudah melewati garis batas dari "belajar React" menjadi "bisa React". Perbedaan yang tidak kecil di mata rekruter maupun klien freelance.
Arsitektur Aplikasi: Apa yang Akan Kita Bangun?
Kita akan membangun Task Manager App — aplikasi manajemen tugas sederhana yang punya semua fitur CRUD. Kenapa task manager? Karena sederhana nggak berarti membosankan — fiturnya cukup untuk menunjukkan kemampuanmu, tapi tidak terlalu kompleks hingga bikin kamu nyerah di tengah jalan.
| Fitur | Komponen React | Operasi CRUD |
|---|---|---|
| Tambah tugas baru | TaskForm |
CREATE |
| Tampilkan daftar tugas | TaskList |
READ |
| Edit detail tugas | EditModal |
UPDATE |
| Hapus tugas | TaskItem |
DELETE |
🛠️ Langkah Setup Project
Gunakan Vite karena jauh lebih cepat dibanding Create React App (CRA) yang sudah deprecated.
npm create vite@latest task-manager -- --template react cd task-manager npm install
Kita pakai uuid untuk ID unik dan react-hot-toast untuk notifikasi yang kece.
npm install uuid react-hot-toast
src/ ├── components/ │ ├── TaskForm.jsx │ ├── TaskList.jsx │ ├── TaskItem.jsx │ └── EditModal.jsx ├── hooks/ │ └── useTasks.js ├── App.jsx └── main.jsx
useTasks.js. Komponen-mu jadi lebih bersih dan mudah di-debug. Ini adalah praktik nyata yang dipakai di perusahaan teknologi besar.Membangun Fitur CRUD Lengkap di React
Sekarang bagian serunya. Kita mulai dari custom hook yang menjadi "otak" aplikasi, lalu susun komponen satu per satu seperti merakit Lego.
useTasks.jsSemua logika CRUD dikumpulkan di sini. Gunakan localStorage agar data tidak hilang saat di-refresh.
import { useState, useEffect } from 'react'; import { v4 as uuidv4 } from 'uuid'; export function useTasks() { const [tasks, setTasks] = useState(() => { const saved = localStorage.getItem('tasks'); return saved ? JSON.parse(saved) : []; }); useEffect(() => { localStorage.setItem('tasks', JSON.stringify(tasks)); }, [tasks]); // CREATE const addTask = (title) => { setTasks(prev => [...prev, { id: uuidv4(), title, done: false }]); }; // UPDATE const updateTask = (id, newTitle) => { setTasks(prev => prev.map(t => t.id === id ? {...t, title: newTitle} : t)); }; // DELETE const deleteTask = (id) => { setTasks(prev => prev.filter(t => t.id !== id)); }; return { tasks, addTask, updateTask, deleteTask }; }
TaskForm.jsx — Fitur Createimport { useState } from 'react'; export function TaskForm({ onAdd }) { const [input, setInput] = useState(''); const handleSubmit = (e) => { e.preventDefault(); if (!input.trim()) return; onAdd(input); setInput(''); }; return ( <form onSubmit={handleSubmit} style={{display:'flex', gap:'8px'}}> <input value={input} onChange={e => setInput(e.target.value)} placeholder="Tambah tugas baru..." /> <button type="submit">Tambah</button> </form> ); }
value + onChange pada input di atas disebut controlled component — React yang pegang kendali state, bukan DOM. Ini best practice yang bikin form kamu predictable dan mudah di-test.Deploy Project React CRUD ke Vercel atau Netlify: Panduan Lengkap
Aplikasi sudah jalan di laptop? Keren. Tapi kalau cuma jalan di laptopmu sendiri, itu artinya belum selesai. Deploy ke Vercel atau Netlify akan membuat proyekmu punya URL publik — dan itu yang akan kamu cantumkan di portfolio dan LinkedIn.
- Optimasi khusus Next.js & React
- Preview URL otomatis setiap PR
- Deploy hanya dengan
git push - Analytics bawaan yang kece
- Best for: React murni & Next.js
- Form handling bawaan (tanpa backend)
- Serverless Functions mudah dikonfigurasi
- UI dashboard yang lebih intuitif untuk pemula
- Plugin ekosistem yang kaya
- Best for: Static site & form submission
💬 Rekomendasi untuk project React CRUD ini: pakai Vercel — setup paling cepat, zero config.
🚀 Deploy ke Vercel (3 Cara Super Mudah)
Vercel bekerja langsung dari repository GitHub-mu. Pastikan proyekmu sudah ada di sana.
git init git add . git commit -m "feat: initial task manager app" git remote add origin https://github.com/username/task-manager.git git push -u origin main
- Buka vercel.com → Login dengan GitHub
- Klik "Add New Project"
- Pilih repo
task-manager - Vercel otomatis detect Vite — langsung klik "Deploy"
- Tunggu ~30 detik... ✅ Selesai!
npm install -g vercel vercel # Ikuti promptnya → dalam hitungan detik, URL live sudah di tangan!
npm run build dan output directory adalah dist (bukan build seperti CRA). Kalau salah, deploy akan gagal!🟢 Alternatif: Deploy ke Netlify via Drag & Drop
- Jalankan
npm run builddi terminal - Akan muncul folder
dist/ - Buka app.netlify.com → drag-and-drop folder
distke halaman deploy - Selesai! URL langsung aktif dalam hitungan detik 🎉
nama-project.vercel.app. Kalau punya domain sendiri, kamu bisa connect ke sana secara gratis juga — langsung dari dashboard tanpa konfigurasi server yang ribet.Selamat! Kamu Sudah Jadi Zorro-nya React
Kita sudah menyelesaikan perjalanan panjang — dari memahami JSX, props, state, hooks, routing, testing, sampai akhirnya membangun dan men-deploy project React CRUD ke Vercel atau Netlify. Ini bukan sekadar artikel — ini adalah bukti bahwa kamu sudah melewati React From Zero to Zorro.
💬 Punya pertanyaan? Sudah berhasil deploy? Ceritakan pengalamanmu di kolom komentar di bawah! Dan kalau artikel ini membantu, jangan pelit — share ke teman-teman yang lagi berjuang belajar React juga ya. 🙌
Artikel ini adalah bagian ke-16 (terakhir) dari seri komprehensif belajar React untuk pemula. Mulai dari artikel 1 tentang pengenalan React hingga artikel 16 ini tentang project CRUD deploy, semuanya dirancang agar kamu bisa belajar secara sistematis dan terstruktur.
saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux