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 相关文章推荐
查找iframe里元素的方法可传参
Sep 11 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
Nov 11 Javascript
jquery自动切换tabs选项卡的具体实现
Dec 24 Javascript
在Linux上用forever实现Node.js项目自启动
Jul 09 Javascript
jquery获取文档高度和窗口高度汇总
Jan 25 Javascript
jquery ui dialog替代confirm实例分析
Jan 25 Javascript
Vue.js每天必学之组件与组件间的通信
Sep 08 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
Dec 23 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
Sep 07 Javascript
从零开始封装自己的自定义Vue组件
Oct 09 Javascript
swiper Scrollbar滚动条组件详解
Sep 08 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
Jul 31 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+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
javascript 跨浏览器开发经验总结(五) js 事件
2010/05/19 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
利用Webpack实现小程序多项目管理的方法
2019/02/25 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
Python pass 语句使用示例
2014/03/11 Python
python实现连连看游戏
2020/02/14 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
用python对oracle进行简单性能测试
2020/12/05 Python
CSS3属性 line-clamp控制文本行数的使用
2020/03/19 HTML / CSS
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
公司营业员的工作总结自我评价
2013/10/05 职场文书
群众路线批评与自我批评
2014/02/06 职场文书
献爱心标语
2014/06/21 职场文书
2014坚持党风廉政建设思想汇报
2014/09/18 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
护理实习生带教计划
2015/01/16 职场文书
2015年度培训工作总结范文
2015/04/02 职场文书
微信早安问候语
2015/11/10 职场文书
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript