模块化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使用smipleChart实现简单图表
Jan 02 Javascript
详解JavaScript中的Unescape()和String() 函数
Nov 09 Javascript
js+css简单实现网页换肤效果
Dec 29 Javascript
基于JavaScript实现回到页面顶部动画代码
May 24 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
Sep 08 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
Oct 11 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
Jan 06 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
Aug 17 Javascript
微信小程序实现下拉刷新和轮播图效果
Nov 21 Javascript
Nginx设置为Node.js的前端服务器方法总结
Mar 27 Javascript
微信小程序绘制图片发送朋友圈
Jul 25 Javascript
在vue中使用回调函数,this调用无效的解决
Aug 11 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脚本的10个技巧(4)
2006/10/09 PHP
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
2014/06/05 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
JSONP之我见
2015/03/24 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
Python去掉字符串中空格的方法
2014/03/11 Python
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
举例讲解Python中的死锁、可重入锁和互斥锁
2015/11/05 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
pytorch实现线性拟合方式
2020/01/15 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
Django如何批量创建Model
2020/09/01 Python
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
香港中原电器网上商店:Chung Yuen
2019/06/26 全球购物
搞笑获奖感言
2014/01/30 职场文书
周年庆促销方案
2014/03/15 职场文书
岗位竞聘书范文
2014/03/31 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
小学德育工作总结2015
2015/05/12 职场文书
2019年销售人员的职业生涯规划书
2019/03/25 职场文书
部分武汉产收音机展览
2022/04/07 无线电