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 相关文章推荐
JS面向对象、prototype、call()、apply()
May 14 Javascript
用apply让javascript函数仅执行一次的代码
Jun 27 Javascript
推荐10个超棒的jQuery工具提示插件
Oct 11 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
Apr 19 Javascript
基于jquery的文章中所有图片width大小批量设置方法
Aug 01 Javascript
jquery使用正则表达式验证email地址的方法
Jan 22 Javascript
向JavaScript的数组中添加元素的方法小结
Oct 24 Javascript
在Vue中使用echarts的实例代码(3种图)
Jul 10 Javascript
基于axios 解决跨域cookie丢失的问题
Sep 26 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
Sep 03 jQuery
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
Jan 26 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
Jun 15 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
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
2007/03/15 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
2016/03/22 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
JQuery 学习笔记 选择器之二
2009/07/23 Javascript
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
2017/07/19 jQuery
vue配置多页面的实现方法
2018/05/22 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
[10:21]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster 选手采访
2021/03/11 DOTA
Python列表(list)常用操作方法小结
2015/02/02 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
Python中extend和append的区别讲解
2019/01/24 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
python解析yaml文件过程详解
2019/08/30 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
keras自定义损失函数并且模型加载的写法介绍
2020/06/15 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
亚历山大·王官网:Alexander Wang
2017/06/23 全球购物
市场营销专科应届生求职信
2013/11/24 职场文书
办公室岗位职责
2014/02/12 职场文书
幼教求职信
2014/03/12 职场文书
科技工作者先进事迹
2014/08/16 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
2016国庆节活动宣传语
2015/11/25 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP