实现react路由的配置化管理

本文介绍如何在React项目中实现类似Vue的配置化路由,通过封装RouterComp组件和配置路由表,简化路由管理,提高代码可维护性。

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

react实现路由配置化
1、为什么要搞这个配置化

我们知道在vue中我们直接可以把路由做成路由表的形式来实现路由的简介配置,但是在react中,我们没有现成的东西直接支持我们做配置化的路由,但是我们要是每次在需要路由的地方都去调用react-router-dom中的Route就会显得很繁琐,并且代码维护起来会很累,于是我们想把它做成类似与vue的配置化路由。

2、实现步骤
1、首先我们封装一下将路由表信息变为组件渲染的组件

建一个RouterComp.jsx的文件

import React from 'react'
import { Route, Redirect, Switch } from 'react-router-dom'

function RouterComp(props) {
  let {
    routes
  } = props;
  //这里是将所有是重定向的项找出来
  let redir = routes && routes.length > 0 && routes.filter((v, i) => {
    return v.redirect 
  })
  //将重定向的组件渲染出来
  let renderRedir = redir.length > 0 && redir.map((v, i) => {
    return <Redirect from={v.path} to={v.redirect} key={i} />
  })
  return (
    <Switch>
      {
      //这里将所有的Route按照它的path和对应的组件渲染
        routes && routes.length > 0 && routes.map((v, i) => {
          if (v.component) {
            return <Route key={i} path={v.path} component={(props) => {
            	//这里我们将children也就是下一级路由传下去方便在下一级路由使用
              return <v.component routes={v.children} {...props} />
            }} />
          }
          //这里我们将重定向的组件加到里面
        }).concat(renderRedir)
      }
    </Switch>  
  )
}

export default RouterComp
2、现在我们来配置一下路由表把

再建一个router_config.js的文件放我们的路由表

import Default from 'pages/Default/index'
import Login from 'pages/home'
import Home from 'pages/home/index'
import Community from 'pages/community/index'
import Column from 'pages/column/'
import ImportNews from 'pages/importNews/'
import Mine from 'pages/mine'
import loginPage from 'pages/login/'
import SearchPage from 'pages/searchPage/'
const routes = [
    {
      path:"/login",
      component:Login
    },
    {
      path:"/search",
      component:SearchPage
    },
    {
        path:"/default",
        component:Default,
        children:[
          {
            path:"/default/home",
            component:Home
          },
          {
            path:"/default/community",
            component:Community
          },
          {
            path:"/default/column",
            component:Column
          },
          {
            path:"/default/importNews",
            component:ImportNews
          },
          {
            path:"/default/mine",
            component:Mine
          },
          {
            path:"/default/loginPage",
            component:loginPage
          },
        ]
      
    },
    {
      path: '/',
      redirect: '/default/home'
    }
]

export default routes;

这里相对简单一点我们只需要按自己的需要进行配置就可以了

3、最后一步就是将我们的两个文件引入到App.js中进行调用
import React, { Component } from 'react';
import { BrowserRouter as Router } from 'react-router-dom'
import RouterComp from './router/RouterComp.jsx';
import routerList from './router/router_config.js';

class App extends Component {
	render() {
		return (
			<div className="app">
          		<Router>
		            <RouterComp routes = {routerList}>
		            </RouterComp>
          		</Router>
			</div>
		);
	}
}

export default App;

这样我们就能在react项目中进行配置化的路由了

4、注意事项

这里我们需要注意的是在我们的二级路由中必须再次引入

//这样我们就可以将children的路由拿到并且渲染了这样不管多少级的路由我们都可以拿到渲染
<RouterComp routes = {this.props.routes} />
3、谢谢观看

才疏学浅,如果有些的不对或者更好的建议,欢迎评论支持。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值