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 相关文章推荐
HTTP 304错误的详细讲解
Nov 13 Javascript
js charAt的使用示例
Feb 18 Javascript
javascript(js)的小数点乘法除法问题详解
Mar 07 Javascript
用js判断输入是否为中文的函数
Mar 10 Javascript
JavaScript中循环遍历Array与Map的方法小结
Mar 12 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
Mar 27 Javascript
Angularjs中使用指令绑定点击事件的方法
Mar 30 Javascript
JS实现百度搜索接口及链接功能实例代码
Feb 02 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
Aug 13 Javascript
浅谈vue 多个变量同时赋相同值互相影响
Aug 05 Javascript
Vue表单提交点击事件只允许点击一次的实例
Oct 23 Javascript
vue实现下载文件流完整前后端代码
Nov 17 Vue.js
详解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 已经成熟
2006/12/04 PHP
php判断变量类型常用方法
2012/04/24 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
laravel学习教程之存取器
2016/07/30 PHP
Javascript 函数中的参数使用分析
2010/03/27 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
jQuery插件实现无缝滚动特效
2015/11/24 Javascript
jquery表单插件Autotab使用方法详解
2016/06/24 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
JavaScript实现京东快递单号查询
2020/11/30 Javascript
python脚本设置系统时间的两种方法
2016/02/21 Python
浅谈python字符串方法的简单使用
2016/07/18 Python
Django实现简单分页功能的方法详解
2017/12/05 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
学生档案自我鉴定
2013/10/07 职场文书
毕业生求职自荐信怎么写
2014/01/08 职场文书
医生进修自我鉴定
2014/01/19 职场文书
百年校庆节目主持词
2014/03/27 职场文书
融资租赁计划书
2014/04/29 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
2015年调度员工作总结
2015/04/30 职场文书
赞美教师的句子
2019/09/02 职场文书
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js
24年收藏2000多部退役军用电台
2022/02/18 无线电
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python
解决MySQL报“too many connections“错误
2022/04/19 MySQL