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模板入门介绍
Sep 26 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
Aug 07 Javascript
使用原生js写的一个简单slider
Apr 29 Javascript
js使用栈来实现10进制转8进制与取除数及余数
Jun 11 Javascript
从零学习node.js之模块规范(一)
Feb 21 Javascript
清空元素html(&quot;&quot;) innerHTML=&quot;&quot; 与 empty()的区别和应用(推荐)
Aug 14 Javascript
JS基于贪心算法解决背包问题示例
Nov 27 Javascript
微信小程序实现列表下拉刷新上拉加载
Jul 29 Javascript
vue+express+jwt持久化登录的方法
Jun 14 Javascript
Javascript如何实现双指控制图片功能
Feb 25 Javascript
记录一次websocket封装的过程
Nov 23 Javascript
JS闭包原理及其使用场景解析
Dec 03 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安装攻略:常见问题解答(一)
2006/10/09 PHP
基于PHPExcel的常用方法总结
2013/06/13 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
PHP常用的三种设计模式
2017/02/17 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
2019/10/12 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
javascript Window及document对象详细整理
2011/01/12 Javascript
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
python去除所有html标签的方法
2015/05/05 Python
python常见排序算法基础教程
2017/04/13 Python
python制作抖音代码舞
2019/04/07 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
python-django中的APPEND_SLASH实现方法
2019/06/21 Python
python3操作注册表的方法(Url protocol)
2020/02/05 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
django从后台返回html代码的实例
2020/03/11 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
以设计师精品品质提供快速时尚:PopJulia
2018/01/09 全球购物
什么是Linux虚拟文件系统VFS
2015/08/25 面试题
光电信息专业应届生求职信
2013/10/07 职场文书
土木工程专业个人求职信
2013/12/30 职场文书
行政求职信
2014/07/04 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书