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 相关文章推荐
DOM操作一些常用的属性汇总
Mar 13 Javascript
JS实现简易图片轮播效果的方法
Mar 25 Javascript
JavaScript 事件入门知识
Apr 13 Javascript
微信jssdk在iframe页面失效问题的解决措施
Mar 03 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
Jul 25 Javascript
vue实现点击图片放大效果
Aug 15 Javascript
Angular2学习笔记之数据绑定的示例代码
Jan 03 Javascript
使用RN Animated做一个“添加购物车”动画的方法
Sep 12 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
Jan 25 Javascript
记录一次开发微信网页分享的步骤
May 07 Javascript
JS实现旋转木马轮播图
Jan 01 Javascript
webpack的 rquire.context用法实现工程自动化的方法
Feb 07 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
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
GBK的页面输出JSON格式的php函数
2010/02/16 PHP
PHP获取MAC地址的函数代码
2011/09/11 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
关于Curl在Swoole协程中的解决方案详析
2019/09/12 PHP
用一段js程序来实现动画功能
2007/03/06 Javascript
Aptana调试javascript图解教程
2009/11/30 Javascript
基于jQuery的history历史记录插件
2010/12/11 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
Nuxt 项目性能优化调研分析
2020/11/07 Javascript
python实现提取百度搜索结果的方法
2015/05/19 Python
python自动zip压缩目录的方法
2015/06/28 Python
python机器学习之KNN分类算法
2018/08/29 Python
Python实现的特征提取操作示例
2018/12/03 Python
python re正则匹配网页中图片url地址的方法
2018/12/20 Python
python地震数据可视化详解
2019/06/18 Python
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
美国二手复古奢侈品包包购物网站:LXRandCo
2019/06/18 全球购物
医学毕业生自我鉴定
2013/10/30 职场文书
教师的实习自我鉴定
2013/12/17 职场文书
小学音乐教学反思
2014/02/05 职场文书
社区党员公开承诺书
2014/08/30 职场文书
2015年宣传部部长竞选演讲稿
2014/11/28 职场文书
学生会任命书范本
2015/09/21 职场文书
golang 生成对应的数据表struct定义操作
2021/04/28 Golang