react-router-dom 嵌套路由的实现


Posted in Javascript onMay 02, 2020

入口文件index.js:

import React from "react"
import ReactDOM from "react-dom"
import App from "./App.jsx"
import "babel-polyfill"
const root = document.getElementById("app")
if (root !== null) {
 ReactDOM.render(<App />, document.getElementById("app"))
}

各个文件的详细位置:

react-router-dom 嵌套路由的实现

主要目录App.jsx:

import React, { Fragment, Component } from "react"
import {
 BrowserRouter as Router,
 Switch,
 Route,
 NavLink,
 Redirect,
 Link,
 withRouter,
} from "react-router-dom"
// 开始引入各种自定义的组件
import Index from "./pages/platform/index"
//404页面
import ErrorPage from "./pages/ErrorPage"
import Login from "./pages/login/index"
import routes from "./routes/index"


class BaseLayout extends Component {
 constructor(props) {
  super(props)
  }
  
  render(){
    return(
    <Fragment>
      <ul>
     {routes.map((val,index))=>{
       return(
       <li key={index}>
       <Link to={val.path}>{val.authName}</Link>
       </li>
       )
     }
    </ul>
      
       <Switch>
        {routes.map((route, key) => {
         if (route.exact) {
          return (
           <Route
            key={key}
            exact
            path={route.path}
            component={(props) => {
             return (
              <route.component {...props} routes={route.routes} />
             )
            }}
           >
            {/* <route.component /> */}
           </Route>
          )
         } else {
          return (
           <Route
            key={key}
            path={route.path}
            component={(props) => {
             return (
              <route.component {...props} routes={route.routes} />
             )
            }}
           >
            {/* <route.component /> */}
           </Route>
          )
         }
        })}
        <Route path="/">
         <Index />
        </Route>
        <Route path="*">
         <ErrorPage />
        </Route>
       </Switch>
    </Fragment>
    )
  } 
}

class App extends React.Component {
 constructor(props) {
  super(props)
 }
 render() {
  return (
    <Router>
     <Switch>
      <Route path="/login">
       <Login />
      </Route>
      <Route path="/">
       <BaseLayout />
      </Route>
       <!--<Route path="*">-->
       <!--   <ErrorPage />-->
       <!--  </Route>-->
     </Switch>
    </Router>
  )
 }
}

export default App

放路由route.js:

import Index from "../pages/platform/index"
import UserAdd from "../pages/component/User/UserAdd"
import UserList from "../pages/component/User/UserList"

const routes = [
 {
  path: "/index",
  authName: "首页",
  component: Index,
  exact: true,
 },
 {
  path: "/user",
  authName: "用户1",
  component: UserList,
 },
 {
  authName: "用户2",
  path: "/userAdd",
  component: UserAdd,
 },
]
export default routes

其他页面login.jsx:

import React, { Component } from "react"

export default class Login extends Component {
 render() {
  return <div>Login</div>
 }
}

其他页面index.jsx:

import React, { Component } from "react"

export default class Index extends Component {
 render() {
  return <div>Index</div>
 }
}

其他页面UserAdd.jsx:

import React, { Component } from "react"

export default class UserAdd extends Component {
 render() {
  return <div>UserAdd</div>
 }
}

其他页面UserList.jsx:

import React, { Component } from "react"

export default class UserList extends Component {
 render() {
  return <div>UserList</div>
 }
}

到此这篇关于react-router-dom 嵌套路由的实现的文章就介绍到这了,更多相关react 嵌套路由内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript复制对象使用说明
Jun 28 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
Jun 24 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
Mar 11 Javascript
利用JS生成博文目录及CSS定制博客
Feb 10 Javascript
JavaScript编写一个简易购物车功能
Sep 17 Javascript
js中数组插入、删除元素操作的方法
Feb 15 Javascript
JavaScript 中的 this 简单规则
Sep 19 Javascript
js登录滑动验证的实现(不滑动无法登陆)
Jan 03 Javascript
解决vue处理axios post请求传参的问题
Mar 05 Javascript
jquery的$().each和$.each的区别
Jan 18 jQuery
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
Jan 29 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
Dec 08 Javascript
在react中使用vue的状态管理的方法示例
May 02 #Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
May 01 #Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
May 01 #Javascript
jQuery实现的移动端图片缩放功能组件示例
May 01 #jQuery
jQuery实现移动端图片上传预览组件的方法分析
May 01 #jQuery
jQuery实现的上拉刷新功能组件示例
May 01 #jQuery
JS深入学习之数组对象排序操作示例
May 01 #Javascript
You might like
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
php数据类型判断函数有哪些
2013/09/23 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
使用php转义输出HTML到JavaScript
2015/03/27 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
thinkPHP5实现数据库添加内容的方法
2017/10/25 PHP
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
js实现jquery的offset()方法实例
2015/01/10 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
解析vue中的$mount
2017/12/21 Javascript
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
[04:59]2018DOTA2亚洲邀请赛 4.7 Mineski夺冠时刻
2018/04/09 DOTA
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
python之PyMongo使用总结
2017/05/26 Python
详解PyCharm配置Anaconda的艰难心路历程
2018/08/13 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
美国医生配方营养补充剂供应商:Healthy Directions
2019/07/10 全球购物
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
书法培训心得体会
2014/01/05 职场文书
男方婚礼答谢词
2015/01/20 职场文书
大学生实习介绍信
2015/05/05 职场文书
厉行节约工作总结
2015/08/12 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
使用CSS实现音波加载效果
2023/05/07 HTML / CSS