ホームページ >ウェブフロントエンド >jsチュートリアル >エピソード ルーターナイツと一緒にルートをナビゲートする
朝日が惑星コーデックスを暖かい光で照らし、そのセクターを結ぶ複雑なルートネットワークを浮き彫りにしました。アリンは、情報ルートの安全性と効率性を保つ役割を担う伝説のルーター ナイツに会う途中でした。これらの経路は、Planet Codex のデジタル バックボーンを形成し、ユーザーの旅をガイドします。
アリンは、リズミカルな光で脈動するアーチ型の入り口を持つ巨大な建造物であるルーターホールに到着しました。雰囲気は絶え間なく流れるデータを反映するようなエネルギーでうなり声を上げていました。
「士官候補生アリン!」 ナイト・リンカスと呼ばれる、ルーター騎士団の団長。彼の声はしっかりしていて、その存在感は自信に満ちていました。 「ナビゲーション技術を学ぶ準備はできていますか?」
アリンはうなずき、目に期待を輝かせました。
「ルートを理解する: ナビゲーションの構造化」
騎士リンカスはアリンをルーターホールの壮大な地図の部屋に導きました。そこでは、デジタル地図上に光る道が描かれていました。 「カデット、ルーティングはユーザーを目的地に導くものです」と彼は始めた。 「各ルートは特定のパスを定義し、正しいビューが表示されるようにします。」
彼はルートがどのように構成されているかを実証しました:
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} />; }
「ネストされたルートにより、/products/details/:productId または /products/reviews が Products コンポーネント内に表示され、組織的かつ効率的な構造が維持されます。」と Linkus 氏は説明しました。
アリンは、これらのネストされたルートによってナビゲーションがどのようにシームレスになり、ユーザーが主要な経路を離れることなく関連エリアを探索できるようになると想像しました。
「保護されたルートで防御する」
ナイト・リンカスは安全な道でマークされたセクションへ身振りで移動した。 「すべてのルートが誰でもアクセスできるわけではありません。一部は不正アクセスを防ぐために保護する必要があります。」
彼は、これらのルートをどのように管理したかについて説明しました:
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} />, }, ]);
「保護されたルートは私たちの最も重要なエリアを保護し、適切なアクセスを持つ人だけが進むことができるようにします。」
「ローダー: 旅の準備」
ナイト リンカスは、プリロードされたデータを表す輝くストリームをジェスチャーしました。 「ユーザーが目的地に到着する前に、必要なものがすべて揃っていることを確認する必要があります。それがローダーの役割です。」
彼はその使用法を説明しました:
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 []; } }, }, ]);
「ローダーは偵察兵のような役割を果たします」とリンカス氏は語った。 「彼らは、ユーザーが空のルートに遭遇しないように道を準備します。」
「アクション: リアルタイムでの変更の処理」
最後に、ナイト・リンカスは脈動するエネルギーのある経路を指摘しました。 「場合によっては、士官候補生、ルートは変更を許可しなければなりません。そこで行動が必要になります。」
彼は例を示しました:
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} />; }
「アクションにより、ルート内で直接ユーザー入力 (新しいデータの追加など) に応答できるようになり、Codex の応答性が維持されます」と Linkus 氏は述べています。
「ルートをマスターする」
セッションが終わりに近づくと、アリンは光る地図を眺め、新たに得た理解に心が躍りました。騎士のリンカスは彼女の肩に安心感のある手を置きました。
「今日は、ルートを構築、保護、最適化する方法を学びました。ルートは単なる経路ではなく、ユーザー ジャーニーの基礎であることを忘れないでください。」
アリンは決意を固めてうなずき、ルーターホールを出て、惑星コーデックスの防衛と開発に新しい知識を応用する準備を整えました。
以上がエピソード ルーターナイツと一緒にルートをナビゲートするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。