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新闻滚动 js如何实现新闻滚动效果
Jan 07 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
Dec 10 Javascript
js跨域访问示例(客户端/服务端)
May 19 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
Dec 17 Javascript
Javascript中的迭代、归并方法详解
Jun 14 Javascript
angularjs ocLazyLoad分步加载js文件实例
Jan 17 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
Mar 06 Javascript
详解使用VueJS开发项目中的兼容问题
Aug 02 Javascript
layui 实现自动选择radio单选框(checked)的方法
Sep 03 Javascript
uni-app实现点赞评论功能
Nov 25 Javascript
JavaScript仿京东秒杀倒计时
Mar 17 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
Nov 19 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/09/28 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
Js动态创建div
2008/09/25 Javascript
jQuery find和children方法使用
2011/01/31 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
14款NodeJS Web框架推荐
2014/07/11 NodeJs
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
小程序自定义组件实现城市选择功能
2018/07/18 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
解决python写的windows服务不能启动的问题
2014/04/15 Python
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
建筑个人求职信范文
2014/01/25 职场文书
运动会领导邀请函
2014/02/05 职场文书
工程材料采购方案
2014/05/18 职场文书
工地安全标语
2014/06/07 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
解除租房协议书
2014/12/03 职场文书
小学家长通知书评语
2014/12/31 职场文书
环卫工作个人总结
2015/03/04 职场文书
专家推荐信范文
2015/03/26 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android