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 相关文章推荐
jquery 如何动态添加、删除class样式方法介绍
Nov 07 Javascript
javascript四舍五入函数代码分享(保留后几位)
Dec 10 Javascript
了不起的node.js读书笔记之mongodb数据库交互
Dec 22 Javascript
简介AngularJS的HTML DOM支持情况
Jun 17 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
Dec 31 Javascript
jQuery EasyUI之DataGrid使用实例详解
Jan 04 Javascript
jQuery基于扩展简单实现倒计时功能的方法
May 14 Javascript
js实现文字选中分享功能
Jan 25 Javascript
基于JavaScript实现自定义滚动条
Jan 25 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
Jul 26 Javascript
原生JS实现随机点名项目的实例代码
Apr 30 Javascript
Layui弹出层 加载 做编辑页面的方法
Sep 16 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
Smarty局部缓存的几种方法简介
2014/06/17 PHP
PHP遍历XML文档所有节点的方法
2015/03/12 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
很多人都是用下面的js刷新站IP和PV
2008/09/05 Javascript
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
js 函数的执行环境和作用域链的深入解析
2009/11/01 Javascript
js prototype截取字符串函数
2010/04/01 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
js检测浏览器版本、核心、是否移动端示例
2014/04/24 Javascript
基于jquery实现表格内容筛选功能实例解析
2016/05/09 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
javascript中json基础知识详解
2017/01/19 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
JS中箭头函数与this的写法和理解
2021/01/14 Javascript
python处理文本文件并生成指定格式的文件
2014/07/31 Python
python实现马耳可夫链算法实例分析
2015/05/20 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
NumPy统计函数的实现方法
2020/01/21 Python
Python判断变量是否是None写法代码实例
2020/10/09 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
学雷锋先进个人事迹
2014/05/26 职场文书
Vue详细的入门笔记
2021/05/10 Vue.js
详细总结Python常见的安全问题
2021/05/21 Python