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 相关文章推荐
showModelessDialog()使用详解
Sep 07 Javascript
jQuery 事件的命名空间简单了解
Nov 22 Javascript
Javascript的闭包详解
Dec 26 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
Dec 20 Javascript
浅谈Angularjs link和compile的使用区别
Oct 21 Javascript
使用node.js中的Buffer类处理二进制数据的方法
Nov 26 Javascript
JS实现提交表单前的数字及邮箱校检功能
Nov 13 Javascript
vue-cli webpack配置文件分析
May 20 Javascript
vue中v-show和v-if的异同及v-show用法
Jun 06 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
Aug 29 Javascript
在vue中使用jsonp进行跨域请求接口操作
Oct 29 Javascript
React Native项目框架搭建的一些心得体会
May 28 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 isset()与empty()的使用区别详解
2010/08/29 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
Thinkphp3.2实用篇之计算型验证码示例
2017/02/09 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
PHP实现的文件浏览器功能简单示例
2019/09/12 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
Python3查找列表中重复元素的个数的3种方法详解
2020/02/13 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
Python用户自定义异常的实现
2020/12/25 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
国际鲜花速递专家:Floraqueen
2016/11/24 全球购物
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
哈曼俄罗斯官方网上商店:Harman.club
2020/07/24 全球购物
小学美术教学反思
2014/02/01 职场文书
出国英文推荐信
2014/05/10 职场文书
安全责任书怎么写
2014/07/28 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
2015年征兵工作总结
2015/07/23 职场文书
古诗之感恩老师
2019/10/24 职场文书
Python学习之迭代器详解
2022/04/01 Python