模块化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 面向对象之重载
May 04 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
Aug 22 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
Apr 12 Javascript
js特殊字符过滤的示例代码
Mar 05 Javascript
jquery调取json数据实现省市级联的方法
Jan 29 Javascript
JavaScript中字符串(string)转json的2种方法
Jun 25 Javascript
基于jQuery实现的QQ表情插件
Aug 25 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
Jan 01 Javascript
js实现水平滚动菜单导航
Jul 21 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
Sep 01 Javascript
three.js 将图片马赛克化的示例代码
Jul 31 Javascript
vue2.0 解决抽取公用js的问题
Jul 31 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
Smarty+QUICKFORM小小演示
2007/02/25 PHP
php中\r \r\n \t的区别示例介绍
2014/02/08 PHP
php多任务程序实例解析
2014/07/19 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
屏蔽script注入小例子
2013/11/12 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
详细介绍Python函数中的默认参数
2015/03/30 Python
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
Python中的默认参数实例分析
2018/01/29 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
2014年学生会工作总结范文
2014/11/07 职场文书
工作检讨书大全
2015/01/26 职场文书
大学生年度个人总结
2015/02/15 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
学校中秋节活动总结
2015/03/23 职场文书
开学第一周值周总结
2015/07/16 职场文书
小数乘法教学反思
2016/02/22 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫