模块化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中使用inline函数的问题
Mar 08 Javascript
JavaScript 异步调用框架 (Part 5 - 链式实现)
Aug 04 Javascript
也说JavaScript中String类的replace函数
Sep 22 Javascript
JavaScript中的null和undefined解析
Apr 14 Javascript
js的隐含参数(arguments,callee,caller)使用方法
Jan 28 Javascript
教你一步步用jQyery实现轮播器
Dec 18 Javascript
localStorage的黑科技-js和css缓存机制
Feb 06 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
Sep 12 Javascript
jquery 遍历hash操作示例【基于ajax交互】
Oct 12 jQuery
JS数组方法slice()用法实例分析
Jan 18 Javascript
JavaScript实现刮刮乐效果
Nov 01 Javascript
js用正则表达式筛选年月日的实例方法
Jan 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初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
PHP--用万网的接口实现域名查询功能
2012/12/13 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
2016/10/18 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
JS新包管理工具yarn和npm的对比与使用入门
2016/12/09 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
Bootstrap实现可折叠分组侧边导航菜单
2018/03/07 Javascript
通过vue-cli3构建一个SSR应用程序的方法
2018/09/13 Javascript
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
微信小程序动态添加view组件的实例代码
2019/05/23 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
python缩进区别分析
2014/02/15 Python
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
2018/05/10 Python
基于anaconda下强大的conda命令介绍
2018/06/11 Python
解决Python 中英文混输格式对齐的问题
2018/07/16 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
对python中各个response的使用说明
2020/03/28 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
法人代表证明书格式
2014/10/01 职场文书
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS