Rumah >hujung hadapan web >tutorial js >React Router V6: Panduan Pemula '
Titik pembelajaran utama:
<routes></routes>
, dan <route></route>
, termasuk penggunaan parameter laluan untuk routing fleksibel. <link>
useNavigate
Pengenalan:
React Excels di Bangunan Aplikasi Web Dinamik dengan Pelbagai Paparan (Halaman). Tidak seperti aplikasi multi-halaman tradisional, navigasi tidak boleh memuatkan semula keseluruhan halaman. Sebaliknya, pandangan harus dilakukan dengan lancar dalam halaman yang ada. React Router mencapai ini secara deklaratif, memastikan pengalaman pengguna yang lancar. Pengguna mengharapkan:
www.example.com/products
butang belakang/ke hadapan berfungsi: example.com/products/shoes/101
React Router's Declarative Pendekatan Memudahkan Routing Dengan Menentukan Struktur Laluan yang Diinginkan: boleh diletakkan di mana -mana di dalam struktur aplikasi anda. Kesederhanaan komponen seperti
<code class="language-jsx"><route path="/about" element="{<About"></route>} /></code>,
, dan API Router React lain menjadikan laluan mudah dilaksanakan. <route></route>
<route></route>
<link>
Nota penting:
Gambaran Keseluruhan:
Tutorial ini merangkumi:
Menyediakan React dan React Router menggunakan NPM.
Menyediakan Router React:
Anda perlu dipasang Node.js. Jika tidak, muat turun dari laman web rasmi Node.js. Pertimbangkan menggunakan pengurus versi untuk pengurusan Node.js yang lebih mudah. NPM (Pengurus Pakej Node) dibundel dengan Node.js. Sahkan pemasangan:
<code class="language-jsx"><route path="/about" element="{<About"></route>} /></code>Buat projek React baru menggunakan Create React App:
<code class="language-bash">node -v npm -v</code>Pasang React Router Dom:
<code class="language-bash">npx create-react-app react-router-demo cd react-router-demo</code>Mulakan pelayan pembangunan:
<code class="language-bash">npm install react-router-dom</code>aplikasi React anda dengan Router React kini berjalan di
. http://localhost:3000/
React Asas Router:
kami akan membuat aplikasi dengan tiga pandangan: rumah, kategori, dan produk.komponen penghala
atau BrowserRouter
. HashRouter
(menggunakan API Sejarah HTML5) biasanya lebih disukai untuk URL bersih: BrowserRouter
<code class="language-bash">npm start</code>Objek Sejarah
(Hook) menyediakan fungsi useNavigate
untuk navigasi programatik. navigate
membuat UI jika lokasi sepadan dengan laluan. <route></route>
Menyediakan navigasi tanpa reloads halaman. <link>
: App.js
<code class="language-jsx">// src/index.js import { BrowserRouter } from 'react-router-dom'; // ... root.render( <react.strictmode> <browserrouter> <app></app> </browserrouter> </react.strictmode> );</code>Ini menetapkan navigasi dan penghalaan asas.
Routing bersarang:
Laluan sarang dengan meletakkan komponen dalam komponen <route></route>
<route></route>
Ubah suai
App.js
<code class="language-jsx">import { Link, Route, Routes } from 'react-router-dom'; // ... component definitions for Home, Categories, Products ... export default function App() { return ( <div> <nav> <ul> <li> <link to="/">Home</li> <li> <link to="/categories">Categories</li> <li> <link to="/products">Products</li> </ul> </nav> <routes> <route path="/" element="{<Home"></route>} /> <route path="/categories" element="{<Categories"></route>} /> <route path="/products" element="{<Products"></route>} /> </routes> </div> ); }</code>:
Categories.js
<code class="language-jsx">import { Link, Route, Routes } from 'react-router-dom'; import { Categories, Desktops, Laptops } from './Categories'; // Import nested route components // ... other components ... export default function App() { return ( <div> {/* ... navigation ... */} <routes> <route path="/" element="{<Home"></route>} /> <route path="/categories" element="{<Categories"></route>}> <route path="desktops" element="{<Desktops"></route>} /> <route path="laptops" element="{<Laptops"></route>} /> <route path="/products/*" element="{<Products"></route>} /> {/* Note the trailing * */} </routes> </div> ); }</code>membuat laluan kanak -kanak dalam laluan induk.
<outlet></outlet>
Gunakan parameter laluan untuk membuat laluan dinamik. Tambah trailing
ke laluan induk untuk membolehkan laluan kanak -kanak. Gunakan untuk mengakses parameter. *
useParams
UPDATE
Products.js
<code class="language-jsx">import { Link, Outlet } from 'react-router-dom'; export const Categories = () => ( <div> <h2>Categories</h2> <nav> <ul> <li> <link to="desktops">Desktops</li> <li> <link to="laptops">Laptops</li> </ul> </nav> <outlet></outlet> </div> ); export const Desktops = () => <h3>Desktop PC Page</h3>; export const Laptops = () => <h3>Laptops Page</h3>;</code>diakses dalam komponen
menggunakan :productId
. Product
useParams
Gunakan
untuk pengalihan programatik dan buat komponen tersuai. useNavigate
PrivateRoute
Buat
PrivateRoute.js
<code class="language-jsx">// ... (import statements and productData) ... const Products = () => ( <div> <h2>Products</h2> <ul> {/* ... linkList (generated from productData) ... */} </ul> <routes> <route path=":productId" element="{<Product" data="{productData}"></route>} /> <route index element="{<p">Please select a product.} /> </route></routes> </div> ); // ... Product component ...</code>dan mengintegrasikan
ke Login
untuk melindungi laluan PrivateRoute
. Ingatlah pertimbangan keselamatan yang disebut dalam respons asal. App.js
/admin
React Router v6.4 Memperkenalkan pemuatan data dan mutasi API (diilhamkan oleh remix). API ini memudahkan pengambilan data dan pengurusan dalam laluan menggunakan pemuat dan tindakan. Bahagian ini memerlukan penjelasan yang berasingan dan lebih terperinci.
Ringkasan:
Tutorial ini memberikan gambaran menyeluruh mengenai React Router V6, yang meliputi konsep penghalaan asas dan maju. Ingatlah untuk berunding dengan dokumentasi Router React rasmi untuk maklumat dan butiran yang paling terkini.
Atas ialah kandungan terperinci React Router V6: Panduan Pemula '. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!