模块化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 相关文章推荐
jquery validation插件表单验证的一个例子
Mar 03 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
Mar 27 Javascript
JS获取表格内指定单元格html内容的方法
Mar 31 Javascript
AngularJs 弹出模态框(model)
Apr 07 Javascript
学习AngularJs:Directive指令用法(完整版)
Apr 26 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
Dec 25 Javascript
强大的 Angular 表单验证功能详细介绍
May 23 Javascript
为什么我们要做三份 Webpack 配置文件
Sep 18 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
Mar 01 Javascript
Vue-cli@3.0 插件系统简析
Sep 05 Javascript
react+redux仿微信聊天界面
Jun 21 Javascript
解决Antd Table组件表头不对齐的问题
Oct 27 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
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
PHP安全下载文件的方法
2016/04/07 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
javascript中offset、client、scroll的属性总结
2015/08/13 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
Node中使用ES6语法的基础教程
2018/01/05 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
Python实现端口检测的方法
2018/07/24 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
深入浅析Python代码规范性检测
2020/07/31 Python
css 元素选择器的简单实例
2016/05/23 HTML / CSS
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
美术教师岗位职责
2014/03/18 职场文书
学习十八大的心得体会
2014/09/12 职场文书
2014年平安夜寄语
2014/12/08 职场文书
员工年度工作总结2015
2015/05/18 职场文书
2016公司年会主持词
2015/07/01 职场文书
安全教育主题班会总结
2015/08/14 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书
导游词之黄果树瀑布
2019/09/20 职场文书
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript