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 相关文章推荐
显示js对象所有属性和方法的函数
Oct 16 Javascript
将jQuery应用于login页面的问题及解决
Oct 17 Javascript
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
Jul 10 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
Sep 20 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
Aug 05 Javascript
JS中常用的正则表达式
Sep 29 Javascript
微信小程序 网络API 上传、下载详解
Nov 09 Javascript
JavaScript基于面向对象实现的猜拳游戏
Jan 03 Javascript
webpack-dev-server远程访问配置方法
Feb 22 Javascript
Vue 实现展开折叠效果的示例代码
Aug 27 Javascript
判断js数据类型的函数实例详解
May 23 Javascript
vue编写简单的购物车功能
Jan 08 Vue.js
在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
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
php for 循环语句使用方法详细说明
2010/05/09 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
php全排列递归算法代码
2012/10/09 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
PHP实现文件下载详解
2014/11/27 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
基于Vue.js的表格分页组件
2016/05/22 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
2017/07/08 jQuery
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
vue实现word,pdf文件的导出功能
2018/07/31 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
微信小程序单选框自定义赋值
2020/05/26 Javascript
Vue3不支持Filters过滤器的问题
2020/09/24 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
跟老齐学Python之一个免费的实验室
2014/09/14 Python
Python装饰器使用示例及实际应用例子
2015/03/06 Python
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
python调用java的jar包方法
2018/12/15 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
Marriott国际:万豪国际酒店查询预订
2017/09/25 全球购物
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
幼儿教师寄语集锦
2014/04/03 职场文书
竞选班委演讲稿
2014/04/28 职场文书
小学生作文评语集锦
2014/12/25 职场文书
付款证明格式范文
2015/06/19 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
高中数学课堂教学反思
2016/02/18 职场文书