Rumah >hujung hadapan web >tutorial js >Episod Menavigasi Laluan dengan Router Knights
Matahari pagi memandikan Planet Codex dalam cahaya hangat, menyerlahkan rangkaian laluan rumit yang menghubungkan sektornya. Arin sedang dalam perjalanan untuk bertemu Router Knights legenda, pembela yang bertanggungjawab untuk memastikan laluan maklumat selamat dan cekap. Laluan ini membentuk tulang belakang digital Planet Codex, membimbing pengguna melalui perjalanan mereka.
Arin tiba di Dewan Penghala, sebuah struktur besar dengan pintu masuk melengkung yang berdenyut dengan cahaya berirama. Suasana bersenandung dengan tenaga yang mencerminkan aliran data yang berterusan.
“Kadet Arin!” dipanggil Knight Linkus, kapten Router Knights. Suaranya tegas, dan kehadirannya memancarkan keyakinan. “Adakah anda bersedia untuk mempelajari seni navigasi?”
Arin mengangguk, penantian terpancar di matanya.
“Memahami Laluan: Menstrukturkan Navigasi”
Knight Linkus membawa Arin ke bilik peta besar Router Hall, di mana laluan bercahaya dilukis merentasi peta digital. "Penghalaan, Kadet, adalah yang membimbing pengguna ke destinasi mereka," dia memulakan. “Setiap laluan mentakrifkan laluan tertentu dan memastikan paparan yang betul dipaparkan.”
Beliau menunjukkan cara laluan distrukturkan:
import { createBrowserRouter, RouterProvider, Outlet } from 'react-router-dom'; function Products() { return ( <div> <h1>Products</h1> <Outlet /> {/* Ensures child routes render correctly */} </div> ); } const router = createBrowserRouter([ { path: "/", element: <Home /> }, { path: "/about", element: <About /> }, { path: "/products", element: <Products />, children: [ { path: "details/:productId", element: <ProductDetails />, }, { path: "reviews", element: <ProductReviews />, }, ], }, ]); function App() { return <RouterProvider router={router} />; }
“Laluan bersarang memastikan bahawa /products/details/:productId atau /products/reviews dipaparkan dalam komponen Products, mengekalkan struktur yang teratur dan cekap,” jelas Linkus.
Arin membayangkan bagaimana laluan bersarang ini akan menjadikan navigasi lancar, membolehkan pengguna meneroka kawasan berkaitan tanpa meninggalkan laluan utama.
“Mempertahankan Laluan Terlindung”
Knight Linkus kemudiannya bergerak ke bahagian yang ditandai dengan laluan selamat. “Tidak semua laluan boleh diakses oleh semua orang. Sesetengah mesti dilindungi untuk menghalang akses yang tidak dibenarkan.”
Beliau menerangkan cara mereka menguruskan laluan ini:
import { Navigate } from 'react-router-dom'; function ProtectedRoute({ element, isLoggedIn }) { return isLoggedIn ? element : <Navigate to="/login" />; } const router = createBrowserRouter([ { path: "/dashboard", element: <ProtectedRoute element={<Dashboard />} isLoggedIn={userIsAuthenticated} />, }, ]);
“Laluan yang dilindungi melindungi kawasan paling kritikal kami,” katanya, “memastikan hanya mereka yang mempunyai akses yang betul boleh meneruskan.”
“Pemuat: Bersedia untuk Perjalanan”
Knight Linkus memberi isyarat kepada aliran bercahaya yang mewakili data pramuat. “Sebelum pengguna tiba di destinasi mereka, kami mesti memastikan semua yang mereka perlukan sudah sedia. Itulah peranan pemuat.”
Dia menggambarkan penggunaannya:
const router = createBrowserRouter([ { path: "/products", element: <Products />, loader: async () => { try { const response = await fetch('/api/products'); if (!response.ok) { throw new Error('Data fetch failed'); } return response.json(); } catch (error) { console.error('Loader error:', error); return []; } }, }, ]);
“Pemuat bertindak seperti pengakap,” kata Linkus. “Mereka menyediakan jalan supaya pengguna tidak pernah menemui laluan kosong.”
“Tindakan: Mengendalikan Perubahan dalam Masa Nyata”
Akhir sekali, Knight Linkus menunjuk ke laluan dengan tenaga yang berdenyut. “Kadang-kadang, Kadet, laluan mesti membenarkan perubahan. Di situlah tindakan masuk.”
Dia menunjukkan contoh:
import { createBrowserRouter, RouterProvider, Outlet } from 'react-router-dom'; function Products() { return ( <div> <h1>Products</h1> <Outlet /> {/* Ensures child routes render correctly */} </div> ); } const router = createBrowserRouter([ { path: "/", element: <Home /> }, { path: "/about", element: <About /> }, { path: "/products", element: <Products />, children: [ { path: "details/:productId", element: <ProductDetails />, }, { path: "reviews", element: <ProductReviews />, }, ], }, ]); function App() { return <RouterProvider router={router} />; }
“Tindakan membolehkan kami membalas input pengguna—seperti menambahkan data baharu—secara langsung dalam laluan, memastikan Codex responsif,” kata Linkus.
“Menguasai Laluan”
Ketika sesi itu berakhir, Arin meninjau peta yang bercahaya, fikirannya berlumba-lumba dengan pemahaman yang baru ditemui. Knight Linkus meletakkan tangan yang meyakinkan pada bahunya.
“Hari ini, anda telah belajar cara menstruktur, melindungi dan mengoptimumkan laluan. Ingat, laluan adalah lebih daripada laluan—ia adalah asas kepada perjalanan pengguna.”
Dengan anggukan yang nekad, Arin meninggalkan Dewan Penghala, bersedia untuk menggunakan pengetahuan baharunya dalam pertahanan dan pembangunan Planet Codex.
Atas ialah kandungan terperinci Episod Menavigasi Laluan dengan Router Knights. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!