K

Command Palette

Search for a command to run...

Daftar

Routing di React (React Router)

Pahami konsep dasar client-side routing untuk Single Page Application (SPA) di ReactJS dan kenalan singkat dengan library populer React Router untuk navigasi antar 'halaman' tanpa reload.

Pindah-Pindah "Ruangan" di Aplikasi React Tanpa Reload: Kenalan Sama Client-Side Routing!

Udah bisa bikin komponen-komponen UI yang keren pake React? Mantap! Sekarang, bayangin kamu mau bikin aplikasi web yang punya beberapa "halaman" atau "tampilan" berbeda, misalnya halaman Beranda, halaman Tentang Kami, halaman Produk, halaman Kontak.

Di website tradisional (Multi-Page Application - MPA), tiap kali kamu klik link ke halaman lain, browser bakal ngirim request baru ke server, terus server ngirim balik file HTML baru, dan seluruh halaman di-reload.

Tapi, di aplikasi React modern, kita seringnya bikin Single Page Application (SPA). Artinya, browser cuma nge-load satu file HTML aja di awal. Terus, pas pengguna navigasi ke "halaman" lain, JavaScript (React) yang bakal ngubah konten di halaman itu secara dinamis tanpa perlu nge-reload seluruh halaman dari server. Ini bikin transisi antar tampilan jadi kerasa lebih cepet dan smooth, kayak aplikasi desktop atau mobile.

Nah, mekanisme buat ngatur tampilan mana yang muncul berdasarkan URL di browser (tanpa reload) di SPA ini disebut Client-Side Routing. Dan di ekosistem React, library yang paling populer buat ngurusin ini adalah React Router.

Kenapa Butuh Client-Side Routing di SPA?

  • Pengalaman Pengguna (UX) Lebih Baik: Transisi antar halaman jadi lebih cepet dan mulus karena gak ada full page reload.
  • Mirip Aplikasi Native: Bikin aplikasi web jadi kerasa lebih responsif kayak aplikasi desktop atau mobile.
  • State Aplikasi Bisa Dijaga: Karena halaman gak di-reload, state JavaScript di level aplikasi (misalnya, data pengguna yang login) bisa tetep terjaga pas pindah-pindah tampilan.
  • URL yang Bisa Di-bookmark dan Di-share: Meskipun SPA, tiap "halaman" virtual tetep punya URL uniknya sendiri, jadi bisa di-bookmark atau di-share. Browser juga bisa pake tombol back/forward.

React Router: Si Jagoan Navigasi di React

React Router adalah library standar de facto buat ngurusin routing di aplikasi React. Dia nyediain sekumpulan komponen dan hook yang bikin kita gampang ngedefinisiin "rute" (URL path) dan komponen React mana yang harus ditampilin buat tiap rute itu.

Ini bukan tutorial lengkap React Router ya, karena itu topik yang lumayan dalem sendiri. Tapi, kita bakal kenalan sama beberapa konsep dan komponen inti biar kamu dapet gambaran:

Konsep dan Komponen Inti React Router (v6, versi terbaru yang umum)

  1. <BrowserRouter> (atau Router Lainnya):

    • Ini komponen yang harus ngebungkus seluruh bagian aplikasi React-mu yang butuh routing. Biasanya ditaruh di level paling atas (misal, di main.jsx ngebungkus komponen <App />).
    • Dia pake HTML5 History API buat ngejaga UI tetep sinkron sama URL di browser (tanpa # di URL). Ada juga router lain kayak <HashRouter> (pake # di URL, berguna buat environment server statis tertentu).
  2. <Routes>:

    • Komponen ini dipake buat ngedefinisiin kumpulan rute-rute yang ada di aplikasimu. Dia bakal "milih" satu rute yang paling cocok sama URL saat ini dan ngerender komponen yang terkait sama rute itu.
  3. <Route path="url-path" element={<Komponen />} />:

    • Komponen ini yang sebenernya ngedefinisiin satu rute spesifik.
    • path: String yang isinya pola URL buat rute ini (misal, /, /tentang, /produk/:idProduk:idProduk itu parameter dinamis).
    • element: Elemen JSX (biasanya komponen React) yang mau dirender kalau URL saat ini cocok sama path-nya.
  4. <Link to="url-path">Teks Link</Link>:

    • Ini komponen dari React Router buat bikin link navigasi antar rute di aplikasimu.
    • PENTING: Jangan pake tag <a> biasa buat navigasi internal di SPA React yang pake React Router! Pake <a> bakal nyebabin full page reload, ngilangin semua manfaat SPA. <Link> dari React Router yang bakal ngurusin perpindahan tampilan secara client-side.
    • to: Path tujuan link (sama kayak href di <a>).
  5. Hooks dari React Router (misal, useNavigate, useParams, useLocation):

    • React Router nyediain banyak hook buat ngakses informasi routing atau ngelakuin navigasi secara programatik dari dalem komponenmu.
    • useNavigate(): Buat pindah halaman pake JavaScript.
    • useParams(): Buat ngambil parameter dinamis dari URL (kayak idProduk di /produk/:idProduk).

Contoh Setup Routing Super Sederhana (Konseptual):

File main.jsx (atau index.js tergantung setup Vite/CRA):

jsx
import React from 'react';
import ReactDOM from 'react-dom/client';
import { BrowserRouter } from 'react-router-dom'; // Impor BrowserRouter
import App from './App';
import './index.css';
 
ReactDOM.createRoot(document.getElementById('root')).render(
  <React.StrictMode>
    <BrowserRouter> {/* Bungkus App dengan BrowserRouter */}
      <App />
    </BrowserRouter>
  </React.StrictMode>
);

File App.jsx:

jsx
import React from 'react';
import { Routes, Route, Link } from 'react-router-dom'; // Impor komponen routing
 
// Bikin beberapa komponen halaman sederhana
function HalamanBeranda() {
  return <h2>Ini Halaman Beranda</h2>;
}
 
function HalamanTentang() {
  return <h2>Ini Halaman Tentang Kami</h2>;
}
 
function HalamanKontak() {
  return <h2>Hubungi Kami di Sini</h2>;
}
 
function HalamanTidakDitemukan() {
  return <h2>404: Halaman Tidak Ditemukan!</h2>;
}
 
function App() {
  return (
    <div>
      <nav>
        <ul>
          <li><Link to="/">Beranda</Link></li> {/* Pake Link, bukan a */}
          <li><Link to="/tentang">Tentang</Link></li>
          <li><Link to="/kontak">Kontak</Link></li>
        </ul>
      </nav>
 
      <hr />
 
      {/* Tempat konten halaman bakal dirender berdasarkan URL */}
      <Routes>
        <Route path="/" element={<HalamanBeranda />} />
        <Route path="/tentang" element={<HalamanTentang />} />
        <Route path="/kontak" element={<HalamanKontak />} />
        <Route path="*" element={<HalamanTidakDitemukan />} /> {/* Rute 'catch-all' buat 404 */}
      </Routes>
    </div>
  );
}
 
export default App;

Penjelasan Contoh:

  1. Di main.jsx, komponen <App /> kita bungkus pake <BrowserRouter>.
  2. Di App.jsx, kita impor Routes, Route, dan Link.
  3. Kita bikin beberapa komponen simpel buat tiap "halaman" (HalamanBeranda, HalamanTentang, HalamanKontak).
  4. Navigasi (<nav>) pake komponen <Link to="..."> buat pindah antar halaman.
  5. <Routes> ngebungkus semua definisi <Route>.
  6. Tiap <Route> nge-mapping satu path URL ke satu element komponen.
    • path="/" buat halaman utama.
    • path="/tentang" buat halaman tentang.
    • path="*" adalah rute "catch-all" atau wildcard. Kalau gak ada path lain yang cocok, ini yang bakal dirender (biasanya buat halaman 404 Not Found).

Sekarang, kalau kamu jalanin aplikasi ini dan klik link navigasi, konten di bawah garis <hr /> bakal berubah sesuai halaman yang dipilih tanpa browser nge-reload seluruh halaman! URL di address bar juga bakal ikut berubah.

Ini Baru Permukaan!

React Router itu library yang fiturnya banyak banget:

  • Nested Routes (rute di dalem rute).
  • Dynamic Route Parameters (kayak /produk/:idProduk).
  • Protected Routes (rute yang cuma bisa diakses kalau udah login).
  • Lazy Loading Routes (biar kode halaman cuma di-load pas dibutuhin).
  • Dan masih banyak lagi!

Tujuan kita di sini cuma buat ngenalin konsep client-side routing dan ngasih liat "rasanya" pake React Router secara super dasar. Kalau kamu mau bikin SPA yang beneran punya banyak halaman, belajar React Router (atau library routing lain) secara lebih mendalam itu wajib hukumnya.


Dengan client-side routing, aplikasi React-mu jadi bisa ngasih pengalaman navigasi yang cepet dan smooth kayak aplikasi native. Ini adalah salah satu pilar penting buat ngebangun Single Page Application (SPA) yang modern dan canggih.

Kalau kamu udah nyaman sama konsep dasar React (komponen, props, state, hooks), ngulik React Router bisa jadi langkah selanjutnya yang seru buat ningkatin level skill React-mu!

Kuis Pengenalan Client-Side Routing (React Router)

Pertanyaan 1 dari 5

Apa tujuan utama dari Client-Side Routing dalam sebuah Single Page Application (SPA) seperti yang dibangun dengan React?