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>
 
 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM