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
jQuery操作Select的Option上下移动及移除添加等等
Nov 18 Javascript
转换字符串为json对象的方法详解
Nov 29 Javascript
jquery中animate的stop()方法作用实例分析
Jan 30 Javascript
Javascript中数组方法汇总(推荐)
Apr 01 Javascript
基于bootstrap3和jquery的分页插件
Jul 31 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
Mar 09 Javascript
Vue 进阶教程之v-model详解
May 06 Javascript
vue.js选中动态绑定的radio的指定项
Jun 02 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
Nov 20 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
Sep 18 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
Oct 26 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字符串分割函数explode的实例代码
2013/02/07 PHP
php实现Linux服务器木马排查及加固功能
2014/12/29 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
laravel 数据验证规则详解
2019/10/23 PHP
容易被忽略的JS脚本特性
2011/09/13 Javascript
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
2014/12/18 Javascript
js事件监听器用法实例详解
2015/06/01 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
python每次处理固定个数的字符的方法总结
2013/01/29 Python
python实现批量按比例缩放图片效果
2018/03/30 Python
python 定时修改数据库的示例代码
2018/04/08 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
2019/07/01 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
美国购买隐形眼镜网站:Lenses For Less
2020/07/05 全球购物
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
自考毕业自我鉴定范文
2013/10/27 职场文书
大专生自我评价
2014/01/28 职场文书
2014年社区学雷锋活动总结
2014/03/09 职场文书
岗位职责说明书
2014/05/07 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
2014年建筑工作总结
2014/11/26 职场文书
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技