react 动态路由菜单,输入路径不匹配跳转404
时间: 2025-06-27 12:14:18 浏览: 17
### 实现 React 应用中的动态路由菜单并处理未匹配路径
在构建基于 `react-router-dom` 的应用程序时,可以创建一个动态路由菜单,并且当用户尝试访问不存在的路径时自动重定向至 404 错误页面。下面展示了如何完成这一功能。
#### 安装依赖包
首先确保安装了最新版本的 `react-router-dom`:
```bash
npm install react-router-dom@latest --save
```
#### 创建动态路由组件
定义一个用于渲染不同子页面的父级容器组件,在其中声明所有可能存在的静态及动态路由规则[^2]。
```jsx
import React from 'react';
import {
BrowserRouter as Router,
Switch,
Route,
Redirect
} from "react-router-dom";
// 假设这里有一些具体的页面组件
const Home = () => <h2>Home</h2>;
const About = () => <h2>About Us</h2>;
function AppRoutes() {
const dynamicMenuItems = [
{ path: '/home', component: Home },
{ path: '/about', component: About }
// 可以继续添加更多项...
];
return (
<Router>
<Switch>
{/* 渲染动态菜单 */}
{dynamicMenuItems.map((item, index) =>
<Route key={index} exact path={item.path}>
<item.component />
</Route>
)}
{/* 当没有任何已注册的路由与当前URL相匹配时,则显示此默认选项 */}
<Route render={() => <Redirect to='/not-found'/>}/>
{/* 显示自定义404错误消息 */}
<Route path="/not-found">
<NotFoundPage/>
</Route>
</Switch>
</Router>
);
}
export default AppRoutes;
```
上述代码片段中,`AppRoutes` 组件负责管理所有的路由配置。对于每一个想要展示出来的页面都对应着一条记录存放在数组 `dynamicMenuItems` 中;而每当遇到未知请求地址的时候就会触发 `<Route>` 下面那个带有 `render()` 方法的部分去执行一次重定向操作指向 `/not-found` 地址下的专用提示界面[^4]。
#### 构建 404 页面组件
最后一步就是设计一个友好的 404 提示页给那些找不到目标资源的人们看啦!
```jsx
function NotFoundPage(){
return(
<div style={{ textAlign:'center'}}>
<img src="https://example.com/404-image.png" alt="Oops!"/>
<p>抱歉,您查找的内容似乎已经丢失。</p>
<a href="/">返回首页</a>
</div>
)
}
```
这样就完成了整个流程的设计——既实现了根据业务需求灵活调整导航栏项目的能力,又妥善解决了因意外情况导致无法正常加载指定网页的问题[^3]。
阅读全文
相关推荐


















