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的对话框详解与参数
Mar 08 Javascript
JS 对象介绍
Jan 20 Javascript
基于javascipt-dom编程 table对象的使用
Apr 22 Javascript
在每个匹配元素的外部插入新元素的方法
Dec 20 Javascript
jQuery中has()方法用法实例
Jan 06 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
Jan 16 Javascript
js获取地址栏中传递的参数(两种方法)
Feb 08 Javascript
JS开发中基本数据类型具体有哪几种
Oct 19 Javascript
node.js支持多用户web终端实现及安全方案
Nov 29 Javascript
浅谈Webpack打包优化技巧
Jun 12 Javascript
使用原生js编写一个简单的框选功能方法
May 13 Javascript
微信公众号网页分享功能开发的示例代码
May 27 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 表单数据的获取代码
2009/03/10 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
用javascript获取textarea中的光标位置
2008/05/06 Javascript
javascript 打印页面代码
2009/03/24 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
2016/03/11 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
利用Vue v-model实现一个自定义的表单组件
2017/04/27 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
2017/08/29 jQuery
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
详解python如何调用C/C++底层库与互相传值
2016/08/10 Python
Python中生成Epoch的方法
2017/04/26 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
numpy按列连接两个维数不同的数组方式
2019/12/06 Python
查看keras的默认backend实现方式
2020/06/19 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
创业女性典型材料
2014/05/02 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
神秘岛读书笔记
2015/07/01 职场文书
转变工作作风心得体会
2016/01/23 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
离婚协议书格式范本
2016/03/18 职场文书
排查并解决Oracle sysaux表空间异常增长
2022/04/20 Oracle