[英]React Router V6 - NotFound component not working with dynamic parameter/slug?
我已经安装了"react-router-dom": "^6.0.0-beta.0"
并创建了一些页面路由。 如果页面不存在,则面临 Page404 / NotFound 组件无法工作的问题。 由于某种原因,当我使用动态页面/帖子slug
时,如果没有具有此 ID 的页面/帖子,组件NotFound
将无法工作。
React Router 中是否有解决此问题的选项?
import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
import AllPosts from "components/AllPosts";
import SinglePost from "components/SinglePost";
import NotFound from "components/Page404";
const App = () => (
<Router>
<Routes>
<Route element={<AllPosts />} path="/" exact />
<Route element={<SinglePost />} path="/:slug" />
<Route element={<NotFound />} path="*" />
</Routes>
</Router>
);
export default App;
Routes
和Route
组件不可能提前知道某个动态路径(例如“/someUnsupportedIdValue”)不是SinglePost
处理的有效路径。
您在这里的选项是:
SinglePost
中呈现一些替代 UI,类似于“找不到此 ID 的页面”。Navigate
组件在 v6 中替换了Redirect
)到您更通用的 404 页面(实际上,重定向到任何尚未明确处理的“丢弃”路径)会将您带到您的 404 页面)。 或者您可以使用navigate(to, { replace: true })
强制重定向。尝试删除完全因为已从 v6 中删除并确保 Page404 是正确的组件或创建Notfound.jsx
检查帖子是否不存在,然后重定向到 Notfound 页面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.