React-router4路由监听的实现


Posted in Javascript onAugust 07, 2018

React-router 4

React Router4是一个纯React重写的包,现在的版本中已不需要路由配置,一切皆组件。

问题出发点

最近在一个新的H5项目中使用了react router 4 ("react-router-dom": "^4.2.2"),项目中的一部分页面是需要给app客户端的同学使用,这样H5项目中的title就不能一成不变,需要显示对应页面的title,所以,我们就需要去监听路由变动来更改title。

思路

在react中,例如:在父路由中有两个子路由,两个子路由组件的内容都属于父路由中的一部分,通过切换子路由来显示不同内容,这种情况下,父组件中的生命周期函数componentWillUpdate都会在切换子路由时被触发。按照这个思路结合react-router 4一切皆组件的特性,我们可以用一个IndexPage组件来放置所有的一级路由(其他多级路由就可以放到对应一级路由组件中),当我们切换路由是,就可以在这个IndexPage组件中实时监听路由的变动了。

项目目录结构

React-router4路由监听的实现

src/app.js

...
export default class App extends Component {
  render() {
    return (
      <Router>
        <Route path="/" component={IndexPage}/>
      </Router>
    )
  }
}

src/pages/index.js

...
export default class IndexPage extends Component {
  componentDidMount() {
    this.updateTitle(this.props);
  }

  componentWillUpdate(nextProps) {
    this.updateTitle(nextProps);
  }

  updateTitle = (props) => {
    routes.forEach(route => {
        if (route.path === props.location.pathname) {
          document.title = route.title;
        }
    })
  }
  render() {
    return (
      <div className="index-page">
        <Switch>
          ...
          项目一级路由
          ...
        </Switch>
      </div>
    )
  }
}

在这个组件中,当路由变动,我们都能实时监听,获取路由来改变title

总结

利用react-router 4一切皆组件的特性和生命周期函数来监听路由变动

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Add Formatted Data to a Spreadsheet
Jun 12 Javascript
js判断一个元素是否为另一个元素的子元素的代码
Mar 21 Javascript
jquery中each遍历对象和数组示例
Aug 05 Javascript
Javascript 是你的高阶函数(高级应用)
Jun 15 Javascript
使用JavaScript制作一个简单的计数器的方法
Jul 07 Javascript
深入探讨javascript函数式编程
Oct 11 Javascript
分享jQuery插件的学习笔记
Jan 14 Javascript
Mvc提交表单的四种方法全程详解
Aug 10 Javascript
javascript 动态脚本添加的简单方法
Oct 11 Javascript
Angularjs cookie 操作实例详解
Sep 27 Javascript
使用canvas实现一个vue弹幕组件功能
Nov 30 Javascript
如何通过javaScript去除字符串两端的空白字符
Feb 06 Javascript
JavaScript设计模式之职责链模式应用示例
Aug 07 #Javascript
JavaScript使用享元模式实现文件上传优化操作示例
Aug 07 #Javascript
JavaScript设计模式之模板方法模式原理与用法示例
Aug 07 #Javascript
opencv 识别微信登录验证滑动块位置
Aug 07 #Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
Aug 07 #Javascript
深入浅析var,let,const的异同点
Aug 07 #Javascript
springMvc 前端用json的方式向后台传递对象数组方法
Aug 07 #Javascript
You might like
将兴奋、喜悦和坎加斯带到戴安娜:亚马逊公主
2020/03/03 欧美动漫
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
PHP抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
js no-repeat写法 背景不重复
2009/03/18 Javascript
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
JavaScript实现简单的二级导航菜单实例
2015/04/15 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
python搭建简易服务器分析与实现
2012/12/15 Python
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
python 对xml解析的示例
2021/02/27 Python
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
英国床垫在线:Mattress Online
2016/12/07 全球购物
加拿大百叶窗和窗帘定制网站:Blinds
2017/01/30 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
工商管理实习自我鉴定
2013/09/28 职场文书
授权委托书怎么写
2014/04/03 职场文书
学生上课看漫画的检讨书
2014/09/26 职场文书
赤壁观后感(2)
2015/06/15 职场文书