zoukankan      html  css  js  c++  java
  • 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>
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    如何在dede栏目设置中添加自定义字段(dede二次开发-纯抄贴)
    dedecms内容页 上下篇 添加文章描述方法
    关于透明层----背景透明字不透明的效果
    什么是JavaScript闭包终极全解之一——基础概念
    phpcms v9中调用多栏目的方法--get标签(备实例)
    PHP识别电脑还是手机访问网站
    PHP中 post 与get的区别 详细说明
    js 处理数据里面的空格
    mysql中的unix_timestamp函数
    PHP中date函数月和日带0问题
  • 原文地址:https://www.cnblogs.com/hqkbk/p/14165630.html
Copyright © 2011-2022 走看看