模块化react-router配置方法详解


Posted in Javascript onJune 03, 2019

react-router模块化配置

因为公司的需要最近踏进了react坑,一直在挖坑填坑,在路由这一块折腾得不行。

直接进入主题,配置react-router模块化

1.先下载react-router-dom

npm install react-router-dom --save

2.在相应的文件引入react-router-dom相应的模块

import { BrowserRouter as Router, Route, Link } from "react-router-dom";

3.在src子创建一个module目录,接着在module目录在创建一个router.js文件,用来配置路由。

//router.js
import Index from '../components/Index'
import New from '../components/New'
  import NewList from '../components/NewList'
  import NewContent from '../components/NewContent'
  
const routes = [
  
  {
    path:"/",
    component:Index,
    exact:true
  },
  {
    path:"/new",
    component:New,
    routes:[
      {
        path:"/new/",
        component:NewContent
      },
      {
        path:"/new/newList",
        component:NewList
      }
    ]
  },
  
]

export default routes

4.在app.js根目录添加相应的跳转路径。

//app.js

import React from 'react';
import './App.css';
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import router from "./modules/routers"

function App() {
 return (
  <Router>
      <nav className="nav">
        <ul>
          <li>
            <Link to="/">首页</Link>
          </li>
          <li>
            <Link to="/new">新闻</Link>
          </li>
        </ul>
      </nav>
      {
        router.map((router,index)=>{
          
            if(router.exact){
              
              return <Route exact key={index} path={router.path}
                render = {
                  props =>(
                    <router.component {...props} routes = {router.routes}/>
                  )
                }
              />
              
            }else{
              
              return <Route key={index} path={router.path}
                render = {
                  props =>(
                    <router.component {...props} routes = {router.routes} />
                  )
                }
              />
              
            }
          
        })
      }
    </Router>
 );
}

export default App;

注意点:嵌套路由千万不要在<Route/>身上加上component={xxx.xxx},否则在子路由页码就接受不到父路由传递给子路由的数据,重要的事情说三篇

注意点:嵌套路由千万不要在<Route/>身上加上component={xxx.xxx},否则在子路由页码就接受不到父路由传递给子路由的数据,重要的事情说三篇

注意点:嵌套路由千万不要在<Route/>身上加上component={xxx.xxx},否则在子路由页码就接受不到父路由传递给子路由的数据,重要的事情说三篇

解析一下,<Route/>里面的render,这是官方给出的一种固定写法,为了解决父路由传递数据给子路由接受不到的问题。render是一个对象,里面是一个箭头函数,箭头函数放回<router.component {...props} routes = {router.routes} />一个标签,router.component的router对于的是你map传进来的那个形参,传啥写啥;component 是配置文件对应的component ,routes 是传给子路由的数据、(子路由通过this.props.routes 接收)

5.在有子路由的页码配置跳转

import React ,{Component} from 'react';

import { BrowserRouter as Router, Route, Link } from "react-router-dom";

class New extends Component{
  
  render(){
    
    return(
      
      <div className="box">
        <div className="left">
          <ul>
            <li>
              <Link to="/new">New</Link>
            </li>
            <li>
              <Link to="/new/newList">NewList</Link>
            </li>
          </ul>
        </div>
        <div className="right">
          {
            this.props.routes.map((item,index)=>{
              
              return <Route key={index} exact path={item.path} component={item.component}></Route>
              
            })
          }
        </div>
      </div>
      
    )
    
  }
  
}

export default New

最后的结果为:

模块化react-router配置方法详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
picChange 图片切换特效的函数代码
May 06 Javascript
jQuery简单实现网页选项卡特效
Nov 24 Javascript
jQuery旋转插件jqueryrotate用法详解
Oct 13 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
Oct 27 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
Jan 30 Javascript
js常用DOM方法详解
Feb 04 Javascript
微信小程序 下拉菜单简单实例
Apr 13 Javascript
JavaScript+HTML5实现的日期比较功能示例
Jul 12 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
Jun 18 jQuery
vue 实现滚动到底部翻页效果(pc端)
Jul 31 Javascript
JavaScript实现下拉列表
Jan 20 Javascript
vue浏览器返回监听的具体步骤
Feb 03 Vue.js
react 组件传值的三种方法
Jun 03 #Javascript
angular使用md5,CryptoJS des加密的方法
Jun 03 #Javascript
Node.js 的 GC 机制详解
Jun 03 #Javascript
微信小程序蓝牙连接小票打印机实例代码详解
Jun 03 #Javascript
react-native滑动吸顶效果的实现过程
Jun 03 #Javascript
vue-cli 3 全局过滤器的实例代码详解
Jun 03 #Javascript
vue2之简易的pc端短信验证码的问题及处理方法
Jun 03 #Javascript
You might like
PHP+Tidy-完美的XHTML纠错+过滤
2007/04/10 PHP
php监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
php创建类并调用的实例方法
2019/09/25 PHP
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
浅析JavaScript作用域链、执行上下文与闭包
2016/02/01 Javascript
几种tab切换详解
2017/02/03 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
js仿淘宝商品放大预览功能
2017/03/15 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
python共享引用(多个变量引用)示例代码
2013/12/04 Python
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
pymysql 开启调试模式的实现
2019/09/24 Python
Python 支持向量机分类器的实现
2020/01/15 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
英国电子专家:maplin
2019/09/04 全球购物
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
公司薪酬管理制度
2014/01/31 职场文书
争论的故事教学反思
2014/02/06 职场文书
档案保密承诺书
2014/06/03 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
2014年优秀党员材料
2014/12/18 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript