0Pricing
React Academy · Pelajaran

Rute Bertingkat & Tata Letak Outlet

Bangun tata letak rute bertingkat menggunakan bersarang dan komponen .

Rute Bertingkat & Tata Letak Outlet adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

Apa Itu Rute Bertingkat?

Rute bertingkat dalam React Router v6 memungkinkan Anda menyusun tata letak: rute induk merender kerangka (navigasi, bilah sisi), dan rute anak mengisi area konten melalui <Outlet />.

Mendefinisikan Rute Bertingkat

Tempatkan elemen <Route> anak di dalam elemen <Route> induk dalam konfigurasi perute Anda. Jalur induk menjadi awalan untuk semua jalur anak.

import { createBrowserRouter, RouterProvider } from 'react-router-dom';

const router = createBrowserRouter([
  {
    path: '/',
    element: <RootLayout />,
    children: [
      { path: 'dashboard', element: <Dashboard /> },
      { path: 'settings', element: <Settings /> },
    ],
  },
]);

Komponen Outlet

<Outlet /> adalah tempat penampung dalam komponen tata letak induk. React Router menggantinya dengan elemen rute anak yang cocok.

function RootLayout() {
  return (
    <div>
      <nav>
        <Link to="/dashboard">Dashboard</Link>
        <Link to="/settings">Settings</Link>
      </nav>
      <main>
        <Outlet /> {/* child route renders here */}
      </main>
    </div>
  );
}

Rute Indeks

Rute index: true dirender saat URL induk cocok secara tepat, dan berfungsi sebagai anak bawaan ketika tidak ada jalur anak lain yang cocok.

{
  path: '/',
  element: <RootLayout />,
  children: [
    { index: true, element: <Home /> }, // renders at '/'
    { path: 'about', element: <About /> },
  ],
}

Penyusunan Bertingkat

Rute dapat disusun hingga beberapa tingkat. Setiap komponen tata letak dalam rangkaian tersebut merender <Outlet /> untuk anaknya sendiri.

const router = createBrowserRouter([
  {
    path: '/app',
    element: <AppShell />,
    children: [
      {
        path: 'users',
        element: <UsersLayout />,
        children: [
          { index: true, element: <UserList /> },
          { path: ':id', element: <UserDetail /> },
        ],
      },
    ],
  },
]);

Context Outlet

Teruskan data dari tata letak ke rute anak bertingkat melalui prop context pada <Outlet />, lalu baca data tersebut dengan useOutletContext() di dalam rute anak.

// Parent layout
function UsersLayout() {
  const [selected, setSelected] = useState(null);
  return <Outlet context={{ selected, setSelected }} />;
}

// Child route
function UserDetail() {
  const { selected } = useOutletContext();
  return <div>{selected}</div>;
}

Tata Letak Bernama dengan Rute Tanpa Jalur

Rute tanpa path membungkus anak hanya untuk keperluan tata letak, tanpa menambahkan segmen URL. Ini berguna untuk mengelompokkan rute di bawah tata letak bersama.

{
  element: <AuthenticatedLayout />, // no path
  children: [
    { path: '/profile', element: <Profile /> },
    { path: '/billing', element: <Billing /> },
  ],
}

Tautan Relatif dalam Rute Bertingkat

Di dalam rute bertingkat, <Link to='sibling'> diuraikan secara relatif terhadap jalur rute saat ini, sama seperti URL relatif dalam HTML.

// Inside /app/users — link goes to /app/users/new
function UserList() {
  return <Link to="new">Add User</Link>;
}

useMatch dalam Rute Bertingkat

useMatch(pattern) mengembalikan data kecocokan saat URL saat ini cocok dengan pola, sehingga berguna untuk memberi gaya pada tautan aktif dalam tata letak bertingkat.

function NavLink({ to, children }) {
  const match = useMatch(to);
  return (
    <Link to={to} className={match ? 'active' : ''}>
      {children}
    </Link>
  );
}

Batas Kesalahan per Segmen

Tambahkan errorElement ke rute bertingkat mana pun untuk menangkap kesalahan hanya dalam segmen tersebut tanpa menghentikan seluruh kerangka tata letak.

{
  path: 'users',
  element: <UsersLayout />,
  errorElement: <UsersError />,
  children: [
    { path: ':id', element: <UserDetail /> },
  ],
}

Pola Praktis: Tata Letak Dasbor

Dasbor biasanya menggunakan rute tingkat atas untuk kerangka aplikasi (header + bilah sisi) dengan rute bertingkat untuk setiap bagian, sehingga kerangka tetap terpasang sementara hanya area konten yang berubah.

function DashboardShell() {
  return (
    <div className="dashboard">
      <Sidebar />
      <div className="content">
        <Outlet />
      </div>
    </div>
  );
}

Pemeriksaan Cepat

Komponen apa yang harus dirender oleh tata letak induk agar rute anak yang cocok dapat ditampilkan?

Ringkasan

Rute bertingkat memungkinkan rute induk merender tata letak yang tetap terlihat, sementara rute anak mengisi <Outlet />. Gunakan rute indeks untuk anak bawaan, rute tanpa jalur untuk tata letak bersama, dan useOutletContext untuk meneruskan data ke bawah.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Rute Bertingkat & Tata Letak Outlet” gratis?

Ya — teks lengkap “Rute Bertingkat & Tata Letak Outlet” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Rute Bertingkat & Tata Letak Outlet”?

Bangun tata letak rute bertingkat menggunakan bersarang dan komponen . Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Rute Bertingkat & Tata Letak Outlet” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Rute Bertingkat & Tata Letak Outlet
  2. Loader & Actions (API Router Data)
  3. Rute Terlindungi & Penjaga Autentikasi
  4. Mengelola Status dalam Parameter Pencarian URL
← Kembali ke React Academy