模块化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学习资源站点
Aug 29 Javascript
js的for in循环和java里foreach循环的区别分析
Jan 28 Javascript
JavaScript动态改变div属性的实现方法
Jul 22 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
Aug 17 Javascript
vue-cli入门之项目结构分析
Apr 20 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
Jul 18 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
Mar 07 Javascript
vue获取当前点击的元素并传值的实例
Mar 09 Javascript
vue如何判断dom的class
Apr 26 Javascript
Vue数据绑定简析小结
May 07 Javascript
vue实现一拉到底的滑动验证
Jul 25 Javascript
一定要知道的 25 个 Vue 技巧
Nov 02 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之Memcache学习笔记
2013/06/17 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
js与jquery分别实现tab标签页功能的方法
2016/11/18 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
2018/09/07 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[46:55]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
简单使用Python自动生成文章
2014/12/25 Python
Python如何获取系统iops示例代码
2016/09/06 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
Python 函数基础知识汇总
2018/03/09 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
使用Python实现画一个中国地图
2019/11/23 Python
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
2015年安全月活动总结
2015/03/26 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
上诉状格式
2015/05/23 职场文书
积极心理学课程心得体会
2016/01/22 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电
react如何快速设置文件路径别名
2021/04/28 Javascript