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 相关文章推荐
发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
Nov 30 Javascript
jQuery对象和DOM对象的相互转化实现代码
Mar 02 Javascript
理解Javascript_10_对象模型
Oct 16 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
Jul 09 Javascript
JavaScript通过字典进行字符串翻译转换的方法
Mar 19 Javascript
js实现图片淡入淡出切换简易效果
Aug 22 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
Oct 10 Javascript
详解vue-cli中配置sass
Jun 21 Javascript
使用veloticy-ui生成文字动画效果
Feb 08 Javascript
微信小程序封装的HTTP请求示例【附升级版】
May 11 Javascript
vue实现自定义H5视频播放器的方法步骤
Jul 01 Javascript
javascript实现滚轮轮播图片
Dec 13 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中session_unset与session_destroy的区别分析
2011/06/16 PHP
php中数组首字符过滤功能代码
2012/07/31 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
jQuery Dialog 弹出层对话框插件
2010/08/09 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
JavaScript中关于class的调用方法
2017/11/28 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
Python实现的监测服务器硬盘使用率脚本分享
2014/11/07 Python
Selenium定位元素操作示例
2018/08/10 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
2021/02/23 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
办公室副主任职责范本
2014/03/08 职场文书
娱乐节目策划方案
2014/06/10 职场文书
房屋转让协议书
2014/10/18 职场文书
云台山导游词
2015/02/03 职场文书
教师年度考核个人总结
2015/02/12 职场文书
医德医风个人总结
2015/02/28 职场文书
2016年第29个世界无烟日宣传活动总结
2016/04/06 职场文书
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript
pt-archiver 主键自增
2022/04/26 MySQL
Redis过期数据是否会被立马删除
2022/07/23 Redis