react router 4.0以上的路由应用详解


Posted in Javascript onSeptember 21, 2017

本文介绍了react router 4.0以上的路由应用,分享给大家,具体如下:

在4.0以下的react router中,嵌套的路由可以放在一个router标签中,形式如下,嵌套的路由也直接放在一起。

<Route component={App}>
  <Route path="groups" components={Groups} />
  <Route path="users" components={Users}>
   <Route path="users/:userId" component={Profile} />
  </Route>
</Route>

但是在4.0以后,嵌套的路由与之前的就完全不同了,需要单独放置在嵌套的根component中去处理路由,否则会一直有warning:

You should not use <Route component> and <Route children> in the same route

正确形式如下

<Route component={App}>
  <Route path="groups" components={Groups} />
  <Route path="users" components={Users}>
   //<Route path="users/:userId" component={Profile} />
  </Route>
</Route>

上面将嵌套的路由注释掉

const Users = ({ match }) => (
 <div>
  <h2>Topics</h2>
  <Route path={`${match.url}/:userId`} component={Profile}/>
 </div>
)

上面在需要嵌套路由的component中添加新的路由

一个完整的嵌套路由的例子如下

说明及注意事项

1.以下代码采用ES6格式

2.react-router-dom版本为4.1.1

3.请注意使用诸如HashRouter之类的history,否则一直会有warning,不能渲染

import React, { Component } from 'react';
import ReactDOM from 'react-dom';
// import { Router, Route, Link, Switch } from 'react-router';
import {
 HashRouter,
 Route,
 Link,
 Switch
} from 'react-router-dom';

class App extends Component {
 render() {
  return (
   <div>
    <h1>App</h1>
    <ul>
     <li><Link to="/">Home</Link></li>
     <li><Link to="/about">About</Link></li>
     <li><Link to="/inbox">Inbox</Link></li>
    </ul>
    {this.props.children}

   </div>
  );
 }
}

const About = () => (
 <div>
  <h3>About</h3>
 </div>
)

const Home = () => (
 <div>
  <h3>Home</h3>
 </div>
)

const Message = ({ match }) => (
 <div>
  <h3>new messages</h3>
  <h3>{match.params.id}</h3>
 </div>
)

const Inbox = ({ match }) => (
 <div>
  <h2>Topics</h2>
  <Route path={`${match.url}/messages/:id`} component={Message}/>

 </div>
) 

ReactDOM.render(
 (<HashRouter>
  <App>
    <Route exact path="/" component={Home} />
    <Route path="/about" component={About} />
    <Route path="/inbox" component={Inbox} />
  </App>
 </HashRouter>),
 document.getElementById('root')
);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
简单的js分页脚本
May 21 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
Dec 04 Javascript
js或者jquery判断图片是否加载完成实现代码
Mar 20 Javascript
node.js中的console.assert方法使用说明
Dec 10 Javascript
JavaScript 变量、作用域及内存
Apr 08 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
Dec 14 Javascript
jQuery实现ajax无刷新分页页码控件
Feb 28 Javascript
Vuejs 组件——props数据传递的实例代码
Mar 07 Javascript
基于Vue.js实现tab滑块效果
Jul 23 Javascript
浅谈angular.js跨域post解决方案
Aug 30 Javascript
json 带斜杠时如何解析的实现
Aug 12 Javascript
js实现点击图片在屏幕中间弹出放大效果
Sep 11 Javascript
详解10分钟学会vue滚动行为
Sep 21 #Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
Sep 21 #jQuery
JavaScript实现简单生成随机颜色的方法
Sep 21 #Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
Sep 21 #Javascript
shiro授权的实现原理
Sep 21 #Javascript
AngularJS 的$timeout服务示例代码
Sep 21 #Javascript
JS路由跳转的简单实现代码
Sep 21 #Javascript
You might like
PHP开发文件系统实例讲解
2006/10/09 PHP
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
php下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
php 修改上传文件大小限制实例详解
2016/10/23 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
[46:32]Fnatic vs OG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python实现获取序列中最小的几个元素
2014/09/25 Python
一步步教你用Python实现2048小游戏
2017/01/19 Python
Python用threading实现多线程详解
2017/02/03 Python
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
python验证码识别的示例代码
2017/09/21 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
详解python中的hashlib模块的使用
2019/04/22 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
python标识符命名规范原理解析
2020/01/10 Python
pandas.DataFrame.drop_duplicates 用法介绍
2020/07/06 Python
聊聊python中的循环遍历
2020/09/07 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
PUMA官方商城:世界领先的运动品牌之一
2016/11/16 全球购物
亿阳信通股份有限公司笔试题(C#)
2016/03/04 面试题
幼儿园教师培训制度
2014/01/16 职场文书
关于迟到的检讨书
2014/01/26 职场文书
2014年派出所工作总结
2014/11/21 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python