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 相关文章推荐
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
Jun 26 Javascript
JavaScript中也使用$美元符号来代替document.getElementById
Jun 19 Javascript
js获取单选框或复选框值及操作
Dec 18 Javascript
js控制表单操作的常用代码小结
Aug 15 Javascript
JS Date函数整理方便使用
Oct 23 Javascript
JavaScript运算符小结
Jun 03 Javascript
简述AngularJS相关的一些编程思想
Jun 23 Javascript
详解Javascript ES6中的箭头函数(Arrow Functions)
Aug 24 Javascript
canvas压缩图片转换成base64格式输出文件流
Mar 09 Javascript
微信小程序实战之自定义抽屉菜单(7)
Apr 18 Javascript
详解如何让Express支持async/await
Oct 09 Javascript
vue组件从开发到发布的实现步骤
Nov 11 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
实现树状结构的两种方法
2006/10/09 PHP
php简单的会话类代码
2011/08/08 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
拖拉表格的JS函数
2008/11/20 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
JQUERY dialog的用法详细解析
2013/12/19 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
JavaScript 总结几个提高性能知识点(推荐)
2017/02/20 Javascript
详解在Angular项目中添加插件ng-bootstrap
2017/07/04 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
Python利用myqr库创建自己的二维码
2020/11/24 Python
python3实现简单飞机大战
2020/11/29 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
北京某公司的.net笔试题
2014/03/20 面试题
.NET程序员的数据库面试题
2012/10/10 面试题
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
2015新学期家长寄语
2015/02/26 职场文书
课程设计感想范文
2015/08/11 职场文书
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL