react-路由简单封装

首先在react项目的src文件夹下创建文件:例:router.view.js和router.config.js

  router.config.js---生成并抛出路由配置表

    //引入路由试图组件

    import Table from "../component/table";

    import About from "../component/about";
    import Log from "../component/log";
    import Login from "../component/login";
    import LoginSucceed from "../component/loginSucceed";
    import MySy from "../component/table/mySy";
    import TuiJ from "../component/table/tuiJ";
    import XinX from "../component/table/xinX";
    import My from "../component/table/my";
    const routers = [
        {                             //重定向配置
            from:'/',
            to:'/table'
        },
        {
            path:'/about',
            component:About
        },
        {
           path:'/login',
            component:Login
        },
        {
            path:'/loginSucceed',
            component:LoginSucceed
        },
        {
            path:'/log',
            component:Log
        },
        {
            path:'/table',
            component:Table,
            children:[           //一级路由配置
                {
                    from:'/',
                    to:'/table/mySy',
                    children:[               //二级路由配置
                        {
                            from:'/',          //一级路由重定向
                            to:'/table/mySy/ErJiRouter'
                        },
                        {
                            path:'/table/mySy/ErJiRouter',
                            component:ErJiRouter
                        }
                    ]
                },
                {
                    path:'/table/mySy',
                    component:MySy
                },
                {
                    path:'/table/tuiJ',
                    component:TuiJ
                },
                {
                    path:'/table/xinX',
                    component:XinX
                },
                {
                    path:'/table/my',
                    component:My
                },
            ]
        }
    ]
    export default routers
router.config.js  加载路由视图组件大函数
  import React, { Component } from 'react'
  //引入路由内置组件
  import { Switch, Route, Redirect } from 'react-router-dom'
  export default class Index extends Component {
      render() {
          const { routers } = this.props   //得路由落配置表
          const routerList = routers.filter(item => !item.to)    //筛选出不是重定向的路由数据
    //筛选是重定向数据并生成
          const MyRedirect = routers.filter(item => item.from).map((item, key) => <Redirect key={key} from={item.from} to={item.to}></Redirect>)
          return (
              <Switch>
                  {
        //生成路由对象   路由组件等
                      routerList && routerList.map((item, key) => <Route path={item.path} key={key}
          //路由嵌套,二级路由 , ...props 二级路由可以获取到props
                          render={props => <item.component {...props} routers={item.children}></item.component>}
                      ></Route>).concat(MyRedirect)   //添加重定向
                  }
             </Switch>
          )
      }
  }
app.js文件下
  import React from 'react';
  //引入路由配置表
  import routers from './router/router.config'
  //引入加载路由的组件
  import MyRouter from './router/router.view'
  //引入路由内置组件
  import { BrowserRouter } from 'react-router-dom'
  function App() {
    return (
        <BrowserRouter>
    //加载、展示路由试图组件并传入路由配置表
          <MyRouter routers={routers}></MyRouter>
        </BrowserRouter>
    );
  }

  export default App;
  在此需要提醒下,如果路由视图组件写在app.js文件夹下时,每个页面都会存在路由组件
注意:
  一、二级路由或三级路由需在对应有路由的组件下引入添加:
  import MyRouter from '../../router/router.view'
   <MyRouter routers={this.props.routers}></MyRouter>
     <NavLink to="路由表对应地址">首页</NavLink>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/hqkbk/p/14165630.html