Rumah > Soal Jawab > teks badan
P粉4589136552023-08-26 17:20:32
Ya, semestinya. Untuk setiap Routes
组件都管理着自己可以匹配的路由的“范围”。例如,如果当前的URL路径是"/messages/loremipsum"
,根Routes
组件会匹配"/messages/*"
,并正确渲染MessageRoutes
组件。然后,MessageRoutes
组件的Routes
组件会继续匹配下一个路径段。由于没有"*/loremipsum"
laluan laluan, anda memerlukan satu lagi laluan "tangkap semua" untuk mengendalikan perkara ini.
Masalahnya ialah komponen Routes
tidak mengetahui sebarang laluan keturunan yang mungkin ditunjukkan oleh laluannya.
Contoh:
import { Route, Routes } from "react-router-dom"; import NotFound from "../pages/NotFound"; import MessageRoutes from "../features/messages/routes/MessageRoutes"; import Home from "../pages/Home"; export default function AppRoutes() { return ( <Routes> <Route path="/" element={<Home />} /> <Route path="/messages/*" element={<MessageRoutes />} /> <Route path="*" element={<NotFound />} /> </Routes> ); }
import { Route, Routes } from "react-router-dom"; import ProtectedRoutes from "../../../routes/ProtectedRoutes"; import MessageOverview from "../pages/MessageOverview"; import NewMessage from "../pages/NewMessage"; import NotFound from "../pages/NotFound"; export default function MessageRoutes() { return ( <Routes> <Route element={<ProtectedRoutes />}> <Route path="/" element={<MessageOverview />} /> <Route path="/new" element={<NewMessage />} /> <Route path="*" element={<NotFound />} /> </Route> </Routes> ); }
Jika anda mahukan laluan "catch-all" yang berasingan, maka anda memerlukan konfigurasi laluan yang berasingan.
Contoh:
import { Route, Routes } from "react-router-dom"; import MessageOverview from "../pages/MessageOverview"; import NewMessage from "../pages/NewMessage"; import NotFound from "../pages/NotFound"; import Home from "../pages/Home"; export default function AppRoutes() { return ( <Routes> <Route path="/" element={<Home />} /> <Route element={<ProtectedRoutes />}> <Route path="/messages"> <Route index element={<MessageOverview />} /> <Route path="new" element={<NewMessage />} /> </Route> </Route> <Route path="*" element={<NotFound />} /> </Routes> ); }
Sekarang, apabila laluan URL ialah "/messages/loremipsum"
, "/messages/loremipsum"
时,这个Routes
组件知道它正在渲染的嵌套路由,并且可以正确匹配并渲染NotFound
komponen