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 中对象的继承〔转贴〕
Jan 22 Javascript
得到文本框选中的文字,动态插入文字的js代码
Mar 07 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
May 19 Javascript
浅谈JavaScript中的Math.atan()方法的使用
Jun 14 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
Dec 25 Javascript
浅析BootStrap中Modal(模态框)使用心得
Dec 24 Javascript
JavaScript反弹动画效果的实现代码
Jul 13 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
Sep 10 Javascript
javascript 产生随机数的几种方法总结
Sep 26 Javascript
JavaScript中call和apply方法的区别实例分析
Aug 03 Javascript
Vue动态获取width的方法
Aug 22 Javascript
通过GASP让vue实现动态效果实例代码详解
Nov 24 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
mysql建立外键
2006/11/25 PHP
PHP+FastCGI+Nginx配置PHP运行环境
2014/08/07 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
js跑马灯代码(自写)
2013/04/17 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
JSONP之我见
2015/03/24 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
2016/11/25 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
javaScript基础详解
2017/01/19 Javascript
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
python中的字符串内部换行方法
2018/07/19 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
解决python中使用PYQT时中文乱码问题
2019/06/17 Python
python求质数列表的例子
2019/11/24 Python
Python动态导入模块和反射机制详解
2020/02/18 Python
详解Python 循环嵌套
2020/07/09 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
Canvas 像素处理之改变透明度的实现代码
2019/01/08 HTML / CSS
金融专业毕业生推荐信
2013/11/26 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
法院授权委托书格式
2014/09/28 职场文书
授权委托书
2015/01/28 职场文书
2016年校园植树节广播稿
2015/12/17 职场文书
Python图片检索之以图搜图
2021/05/31 Python
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers