模块化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 scroll事件实现监控滚动条分页示例
Apr 04 Javascript
jQuery中:last-child选择器用法实例
Dec 31 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
Aug 06 Javascript
bootstrap suggest搜索建议插件使用详解
Mar 25 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
Jul 21 Javascript
利用JQUERY实现多个AJAX请求等待的实例
Dec 14 jQuery
微信小程序 Animation实现图片旋转动画示例
Aug 22 Javascript
ios设备中angularjs无法改变页面title的解决方法
Sep 13 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
Jan 15 jQuery
vue自定义指令实现方法详解
Feb 11 Javascript
Javascript和jquery在selenium的使用过程
Oct 31 jQuery
vue中v-for循环选中点击的元素并对该元素添加样式操作
Jul 17 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
2020最新CPU的性能排名
2020/04/02 数码科技
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
php进行支付宝开发中return_url和notify_url的区别分析
2014/12/22 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
PHP获取访问设备信息的方法示例
2019/02/20 PHP
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
微信小程序 表单Form实例详解(附源码)
2016/12/22 Javascript
JS实现左边列表移到到右边列表功能
2018/03/28 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
发布一款npm包帮助理解npm的使用
2019/01/03 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
Python os模块介绍
2014/11/30 Python
Python实现获取操作系统版本信息方法
2015/04/08 Python
scrapy spider的几种爬取方式实例代码
2018/01/25 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
2016/05/17 HTML / CSS
英语演讲稿范文
2014/01/03 职场文书
手机促销活动方案
2014/02/05 职场文书
公司募捐倡议书
2014/05/14 职场文书
班风口号
2014/06/18 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
新闻稿标题
2015/07/18 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书