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 相关文章推荐
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
Oct 29 Javascript
JavaScript中数组对象的那些自带方法介绍
Mar 12 Javascript
简单时间提示DEMO从0开始一直进行计时
Nov 19 Javascript
jquery如何把数组变为字符串传到服务端并处理
Apr 30 Javascript
javascript实现节点(div)名称编辑
Dec 17 Javascript
Bootstrap导航条学习使用(一)
Feb 08 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
Dec 24 Javascript
js使用formData实现批量上传
Mar 27 Javascript
微信小程序 确认框的实现(附代码)
Jul 23 Javascript
解决layui laydate 时间控件一闪而过的问题
Sep 28 Javascript
详解React 元素渲染
Jul 07 Javascript
Array.filter中如何正确使用Async
Nov 04 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
Laravel Validator自定义错误返回提示消息并在前端展示
2019/05/09 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
解决 FireFox 下[使用event很麻烦] 的问题.
2006/08/22 Javascript
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
基于jQuery创建鼠标悬停效果的方法
2015/03/07 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
纯js代码生成可搜索选择下拉列表的实例
2018/01/11 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
vue环形进度条组件实例应用
2018/10/10 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
2019/05/15 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
解决vuex刷新数据消失问题
2020/11/12 Javascript
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
Python常见字典内建函数用法示例
2018/05/14 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
Python 列表的清空方式
2020/01/13 Python
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
六十大寿答谢词
2014/01/12 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
2014个人年终工作总结范文
2014/12/15 职场文书
迁徙的鸟观后感
2015/06/09 职场文书
Go timer如何调度
2021/06/09 Golang