react根据后台返回的路由表,在页面中渲染路由表,包含二级路由并同时使用antdesi中的menu组件进行渲染
时间: 2024-05-15 16:19:47 浏览: 188
react-router 路由切换动画的实现示例
1. 在React中使用React Router进行路由管理,需要安装依赖:
```
npm install react-router-dom
```
2. 在项目中创建一个路由表组件,例如:
```
import { Switch, Route, Redirect } from 'react-router-dom';
const RouterTable = ({routes}) => {
return (
<Switch>
{routes.map(route => {
if (route.redirect) {
return (
<Redirect key={route.path} exact from={route.path} to={route.redirect} />
)
} else {
return (
<Route
key={route.path}
exact={route.exact}
path={route.path}
render={props => (
<route.component {...props} routes={route.routes} />
)}
/>
)
}
})}
</Switch>
)
}
```
其中,routes是后台返回的路由表,包含了每个页面的路径、组件等信息。在这个组件中使用Switch和Route进行路由的匹配,如果当前路由有二级路由,将二级路由的信息传递给当前组件。
3. 在页面中使用Antd的Menu组件进行渲染,例如:
```
import { Menu } from 'antd';
const { SubMenu } = Menu;
const renderMenu = (routes) => {
return (
<Menu theme="dark" mode="inline">
{routes.map(route => {
if (route.routes) {
return (
<SubMenu key={route.path} title={route.title}>
{renderMenu(route.routes)}
</SubMenu>
)
} else {
return (
<Menu.Item key={route.path}>
{route.title}
</Menu.Item>
)
}
})}
</Menu>
)
}
const HomePage = ({routes}) => {
return (
<div>
{renderMenu(routes)}
<RouterTable routes={routes} />
</div>
)
}
```
在这个组件中,使用递归的方式将路由表中的菜单项进行遍历,如果当前菜单项有子菜单,则递归调用renderMenu进行渲染。最后,在页面中将Menu和RouterTable组件进行渲染。
阅读全文