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 相关文章推荐
在JavaScript中使用inline函数的问题
Mar 08 Javascript
javascript 控制 html元素 显示/隐藏实现代码
Sep 01 Javascript
javascript 添加和移除函数的通用方法
Oct 20 Javascript
JS小功能(onmouseover实现选择月份)实例代码
Nov 28 Javascript
javascript将DOM节点添加到文档的方法实例分析
Aug 04 Javascript
jquery动态增加删减表格行特效
Nov 20 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
Mar 24 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
Jun 08 Javascript
js 递归和定时器的实例解析
Feb 03 Javascript
js构建二叉树进行数值数组的去重与优化详解
Mar 26 Javascript
vue2.0实现列表数据增加和删除
Jun 17 Javascript
解决pycharm双击但是无法打开的情况
Oct 31 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
PHP一些有意思的小区别
2006/12/06 PHP
php zlib压缩和解压缩swf文件的代码
2008/12/30 PHP
php笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
php实现的mongodb操作类
2015/05/28 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
Javascript JSQL,SQL无处不在,
2010/05/05 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
2010/11/28 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
js实现日历的简单算法
2017/01/24 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
为Python的web框架编写MVC配置来使其运行的教程
2015/04/30 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
python实现对输入的密文加密
2019/03/20 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
python实现猜拳小游戏
2020/04/05 Python
ipython jupyter notebook中显示图像和数学公式实例
2020/04/15 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
美术专业个人自我评价
2014/01/18 职场文书
亲戚结婚的请假条
2014/02/11 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
网络技术专业推荐信
2014/02/20 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
校园活动策划方案
2014/06/13 职场文书
国际贸易求职信
2014/07/05 职场文书
劳模先进事迹材料
2014/12/24 职场文书
人事任命通知
2015/04/20 职场文书
庆祝教师节主持词
2015/07/06 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书