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的反射问题
Apr 07 Javascript
location对象的属性和方法应用(解析URL)
Apr 12 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
Jun 26 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
Nov 18 Javascript
jQuery+PHP打造滑动开关效果
Dec 16 Javascript
JS操作HTML自定义属性的方法
Feb 10 Javascript
JS实现弹性菜单效果代码
Sep 07 Javascript
javascript 玩转Date对象(实例讲解)
Jul 11 Javascript
基于AngularJS的拖拽文件上传的实例代码
Jul 15 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
May 16 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
Apr 17 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
May 22 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实现与ASP Banner组件相似的类
2006/10/09 PHP
数据库查询记录php 多行多列显示
2009/08/15 PHP
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
jquery 查找新建元素代码
2010/07/06 Javascript
页面只有一个text的时候,回车自动submit的解决方法
2010/08/12 Javascript
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
JSONP跨域请求
2017/03/02 Javascript
VUE多层路由嵌套实现代码
2017/05/15 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
[02:09]抵达西雅图!中国军团加油!
2014/07/07 DOTA
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
PyQt5笔记之弹出窗口大全
2019/06/20 Python
python之yield和Generator深入解析
2019/09/18 Python
Django-imagekit的使用详解
2020/07/06 Python
HTML5注册页面示例代码
2014/03/27 HTML / CSS
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
MYSQL支持事务吗
2013/08/09 面试题
会计电算化专业个人的自我评价
2013/11/24 职场文书
留学推荐信中文范文三篇
2014/01/25 职场文书
七匹狼男装广告词
2014/03/21 职场文书
仓库文员岗位职责
2014/04/06 职场文书
学雷锋志愿者活动总结
2014/06/27 职场文书
银行领导班子四风对照检查材料
2014/09/27 职场文书
2015年手术室工作总结
2015/05/11 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书