React 路由

本文分享了在React项目中使用AntDesign进行Layout布局下的路由处理经验,包括App.js中的路由配置、创建本地路由数据、在Main页面中引入路由及处理多级导航,最后通过map形式简化Route的编写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

针对React路由的简单处理

对于已经习惯了用vue来写项目的我来说,重新玩起react那坑真是无处不在~!!
话不多说,今天主要和大家分享下关于react 使用ant design 在Layout布局下的路由处理

一、在App.js中引入主页和登录页

import React from 'react';
import './App.css';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import Login from './pages/Login';
import Main from './pages/Main';
import moment from 'moment';
import 'moment/locale/zh-cn';
moment.locale('zh-cn');
function App() {
  return (
    <Router>
      <div className="App">
        <Switch>
            <Route exact path='/' component={Login} />
            <Route path='/main' component={Main} />//Main页面作为主页加载Layout
        </Switch>
    </div>
    </Router>
  );
}

export default App;

这里只做简单的demo 大家可以按需求在App.js中引入类似404的页面

二、在src目录下创建router文件夹,router下创建index.js

代码如下:

import Pagehome from '../pages/Pagehome';
import Cashwithdrawal from '../pages/Cashwithdrawal';
import BranchInformation from '../pages/BranchInformation';
import CarBuying from '../pages/CarBuying';
import IdentityConfiguration from '../pages/IdentityConfiguration';
import Incomestatement from '../pages/Incomestatement';
import PartnershipWarrant from '../pages/PartnershipWarrant';
import ProductDisplay from '../pages/ProductDisplay';
import RechargeRecord from '../pages/RechargeRecord';

const Routers = [
    {path:'/main/index',name:"首页",component: Pagehome},
    {path:'/main/cash',name:"提现到余额表",component: Cashwithdrawal},
    {path:'/main/branchInformation',name:"分公司信息表",component: BranchInformation},
    {path:'/main/car',name:"购车人表",component: CarBuying},
    {path:'/main/id',name:'购车身份配置表',component: IdentityConfiguration},
    {path:'/main/income',name:'收益表',component: Incomestatement},
    {path:'/main/warrant',name:'合伙人权证表',component: PartnershipWarrant},
    {path:'/main/product',name:'产品展示表',component: ProductDisplay},
    {path:'/main/recharge',name:'充值记录表',component: RechargeRecord},
];
export default Routers;

这里是本地模拟的路由数据,只展示了一级路由,如果有多级路由,正常加上就行

三、在主页Main中引入router

import Routers from '../router/index';

接着处理下menu

递归调用,多级导航
    renderNav(){
        return this.renderMenuItem(this.state.menuItems)	//这里的menu参数是从后台传过来的
    }
    //根据导航数据,递归遍历生成多级导航
    renderMenuItem(arr){
        return arr.map((item)=>{
            if(item.childs){
                return (
                    <SubMenu key={item.parent.id} title={item.parent.name}>
                        {this.renderMenuItem(item.childs)}
                    </SubMenu>
                )
            }else{
                return  <Menu.Item key={item.parent.path}>
                            <Link to={item.parent.path}>{item.parent.name}</Link>
                        </Menu.Item>
            }
        })
    }
    后台参数结构示例:
    {"parent":{"id":1,"name":"xx","pid":0,"path":"/main/index","action":"","level":"1"}},
    如果有二级路由则有相对应的字段表示

加载menu菜单的函数调用如下:

UNSAFE_componentWillMount = ()=>{
        this.menuData();
    }

在render中添加:

<Menu theme="dark" defaultSelectedKeys={['/main/index']} onClick={this.choice} mode="inline">
 {this.renderNav()}
</Menu>

到这里左侧的菜单栏基本就完成了,下面我们来处理下路由跳转

四、为了避免写巨多的Route

在Layout的content标签下用map的形式替换Route

<Content style={{ margin: '0 16px' }}>
	Routers.map((item)=>{
   		return <Route key={item.path} path={item.path} component={item.component}/>
                })  
</Content>

Routers是之前创建的路由文件,这样就可以根据后台返回的书剑进行渲染菜单页了,点击不同的路由跳转到不同的组件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值