我有以下两份文件
AppRoutes.tsx个
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>
);
}
MessageRoutes.tsx个
import { Route, Routes } from "react-router-dom";
import ProtectedRoutes from "../../../routes/ProtectedRoutes";
import MessageOverview from "../pages/MessageOverview";
import NewMessage from "../pages/NewMessage";
export default function MessageRoutes() {
return (
<Routes>
<Route element={<ProtectedRoutes />}>
<Route path="/" element={<MessageOverview />} />
<Route path="/new" element={<NewMessage />} />
</Route>
</Routes>
);
}
因为我使用路径"/Messages/*"来捕获所有以/Messages开头的路径,所以我的MessageRoutes组件负责处理这些嵌套的路由.我在AppRoutes组件中有一个最后的"*"路径来捕获应用程序不支持的任何url.但是,如果路径是"/Messages/lorefipsum",Reaction路由不会捕获NotFound路由,因为所有以"/Messages"开头的内容都将由MessageRoutes组件处理.
这是否意味着在每个嵌套的路由组件中,我现在必须再次添加最后一个<Route path="\*" element={\<NotFound /\>} /\>
,才能支持最终的全部捕获路由?我不喜欢这种方式.难道每条路由都没有绝对的终极目标吗?