模块化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 相关文章推荐
wordpress之js库集合研究介绍
Aug 17 Javascript
jquery.tmpl JQuery模板插件
Oct 10 Javascript
jQuery.buildFragment使用方法及思路分析
Jan 07 Javascript
Javascript对象属性方法汇总
Nov 21 Javascript
JavaScript 函数的执行过程
May 09 Javascript
jQuery内容筛选选择器实例代码
Feb 06 Javascript
Javascript实现基本运算器
Jul 15 Javascript
jQuery实现页码跳转式动态数据分页
Dec 31 jQuery
Electron autoUpdater实现Windows安装包自动更新的方法
Dec 24 Javascript
Vue中props的详解
May 16 Javascript
通过GASP让vue实现动态效果实例代码详解
Nov 24 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
Dec 04 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提示Notice: Undefined variable的解决办法
2012/11/24 PHP
php对大文件进行读取操作的实现代码
2013/01/23 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
js判断FCKeditor内容是否为空的两种形式
2013/05/14 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
JavaScript使用Range调色及透明度实例
2016/09/25 Javascript
vuex实现简易计数器
2016/10/27 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
全面介绍vue 全家桶和项目实例
2017/12/27 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
JavaScript实现区块链
2018/03/14 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
基于vue hash模式微信分享#号的解决
2020/09/07 Javascript
小米5s微信跳一跳小程序python源码
2018/01/08 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
Python制作动态字符图的实例
2019/01/27 Python
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
贯彻学习两会心得体会范文
2014/03/17 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
小学同学聚会感言
2015/07/30 职场文书
大学班长竞选稿
2015/11/20 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
html输入两个数实现加减乘除功能
2021/07/01 HTML / CSS
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技