模块化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 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(5)
Dec 23 Javascript
js 获取Listbox选择的值的代码
Apr 15 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
Mar 11 Javascript
JS与C#编码解码
Dec 03 Javascript
Jquery遍历checkbox获取选中项value值的方法
Feb 13 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
Jun 23 Javascript
javascript与css3动画结合使用小结
Mar 11 Javascript
在AngularJS中使用AJAX的方法
Jun 17 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
Sep 15 Javascript
vue 2.0封装model组件的方法
Aug 03 Javascript
js实现简单分页导航栏效果
Jun 28 Javascript
vue全局使用axios的操作
Sep 08 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
jQuery创建自己的插件(自定义插件)的方法
2010/06/10 Javascript
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
Jquery中扩展方法extend使用技巧
2014/08/24 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
input框中的name和id的区别
2016/11/16 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
Python入门篇之编程习惯与特点
2014/10/17 Python
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
Tensorflow简单验证码识别应用
2017/05/25 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
Tensorflow使用支持向量机拟合线性回归
2018/09/07 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
django的autoreload机制实现
2020/06/03 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
Python代码注释规范代码实例解析
2020/08/14 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
物业管理计划书
2014/01/10 职场文书
创业计划书如何编写
2014/02/06 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
2015年教师国培感言
2015/08/01 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
晚会开幕词范文
2016/03/04 职场文书
资产移交协议书
2016/03/24 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android