reactjs - 404页面不适用于反应中的嵌套路由
问题描述
我目前正在使用 React 开发一个笔记应用程序,并且我已经构建了一个 404 页面,现在如果我转到一个不存在的路线,它会显示一个 404 页面,例如,如果我转到该路线,/get-the-note/
我会得到一个 404页。但问题是我有一条路线:
<Route exact path="/single-note/:id" component={Singlenote}></Route>
这需要一个 id 并且如果我输入正确的 id 就像我有一个带有 id no 的便条2
并且如果我去路线/single-note/2
它可以工作但是如果我输入一个不存在的 id 就像我输入一个120
不存在的 id然后我转到/single-note/120
我得到一个普通页面而不是 404 页面的路线。即使 id 不正确,我也希望它显示 404 页面
这是我的 app.js 文件:
import "./App.css";
import Homepage from "./components/homepage.component";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import Singlenote from "./components/singlenote.component";
import PageNotFound from "./components/404_page";
function App() {
return (
<Router>
<Switch>
<Route exact path="/" component={Homepage} />
<Route exact path="/single-note/:id" component={Singlenote}></Route>
<Route path="*"><PageNotFound /></Route>
</Switch>
</Router>
);
}
export default App;
这是我的 404 页面:
import React from 'react'
const PageNotFound = () => {
return (
<div id="wrapper">
<img src="https://i.imgur.com/qIufhof.png" />
<div id="info">
<h3>This page could not be found</h3>
</div>
</div >
)
}
export default PageNotFound
解决方案
路由器无法知道哪些 ID 存在和不存在。
Singlenote
如果没有这样的 ID,则由您来呈现 404 内容。
顺便说一句,对于 Switch 中的最后一条路由,您根本不需要路径。
<Route component={PageNotFound} />
推荐阅读
- ruby-on-rails - 如何在url中添加账户名并根据账户名重定向或获取记录
- java - 如何在 Reactive Spring WEBFlux(Spring 5) 中读取上传的 json 文件内容
- c# - 显示外键值列表 Asp Net Web Api
- mysql - 根据购买次数对客户进行分类,找出谁属于哪个范围?
- python - Python Selenium ActionChains - 拖放方法无法正常工作
- java - 如何在佳能 LBP2900 或任何使用 USB OTG 的打印机上打印?
- java - 打印数组中具有负和的子数组的数量
- python - LSH 即时分箱
- mysql - MySQL SELECT 行基于前缀
- python - wxpython中多帧的代码布局指南