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!
⚙️ 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!
No comments:
Post a Comment