模块化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 相关文章推荐
mouse_on_title.js
Aug 25 Javascript
获取DOM对象的几种扩展及简写
Oct 09 Javascript
javascript的几种继承方法介绍
Mar 22 Javascript
jQuery中on方法使用注意事项详解
Feb 15 Javascript
jQuery动态追加页面数据以及事件委托详解
May 06 jQuery
React-Native使用Mobx实现购物车功能
Sep 14 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
Feb 23 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
Mar 02 Javascript
vue通过数据过滤实现表格合并
Nov 30 Javascript
通过Kettle自定义jar包供javascript使用
Jan 29 Javascript
JS加载解析Markdown文档过程详解
May 19 Javascript
浅谈vue中$bus的使用和涉及到的问题
Jul 28 Javascript
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在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
React中的refs的使用教程
2018/02/13 Javascript
js数据类型检测总结
2018/08/05 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
2019/12/10 Javascript
vue data对象重新赋值无效(未更改)的解决方式
2020/07/24 Javascript
初步探究Python程序的执行原理
2015/04/11 Python
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
大学教师年终总结的自我评价
2013/10/29 职场文书
精彩的大学生自我评价
2013/11/17 职场文书
女大学生个人求职信
2013/12/09 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
信用卡工资证明范本
2015/06/19 职场文书
小组口号霸气押韵
2015/12/24 职场文书
如何在Python中创建二叉树
2021/03/30 Python
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS