当前位置: 首页 > news >正文

react路由在layout中的监听

  • 业务中需要在layout里来监听路由的变化,但是layout并不是一个路由组件,所以layout组件内的props并没有location,history等属性,(路由组件:由Route组件处理的才是路由组件)所以我们需要将layout组件转变成路由组件,react-route-dom提供的高阶组件(withRouter)可以实现,

withRotuer 的用法:他是一个函数,接受一个组件作为参数

withRouter 是一个高阶组件 HOC ,因为默认只有被 Route 包裹的组件才能获取到路由状态,如果当前非路由组件想要获取状态,那么可以通过 withRouter 包裹来获取 history ,location 等信息。

const Nav = (props) => {
useEffect(()=>{console.log('history.location.pathname:', history.location)},[history.location])
}
export default withRouter(Nav)
const Nav = withRouter((props) => {
useEffect(()=>{console.log('history.location.pathname:', history.location)},[history.location])
})
export default Nav
  • 也可以通过 history 对象来进行监听。
    • history.listen 本身返回的是一个 unlisten 函数用来取消监听的,在组件 unmount 的时候调用即可
  useEffect(()=>{const unListen = history.listen((location)=>{console.log('2222:', location)})return unListen},[])

参考文档:「React进阶」react-router v6 通关指南 - 掘金

http://www.lryc.cn/news/105928.html

相关文章:

  • Java反射(三)
  • ansible-playbook roles编写lnmp剧本
  • 相机可用性变化监听AvailabilityCallback流程分析
  • 使用Python多线程实现生产者消费者模型
  • Notepad++工具通过正则表达式批量替换内容
  • 从零构建深度学习推理框架-3 手写算子relu
  • 想做上位机,学C#还是QT?
  • Ansible —— playbook 剧本
  • ARM寻址方式
  • 【JAVA】String ,StringBuffer 和 StringBuilder 三者有何联系?
  • 关于计数以及Index返回订单号升级版(控制字符长度,控制年月标记)
  • 【计算机网络】11、网桥(bridge)、集线器(hub)、交换机(switch)、路由器(router)、网关(gateway)
  • 第九篇-自我任务数据准备
  • 2023.8.1号论文阅读
  • webpack优化前端框架性能
  • Unity UGUI的Outline(描边)组件的介绍及使用
  • 爆改vue3 setup naiveui可编辑table
  • 功率放大器的种类有哪三种类型
  • HDFS 分布式存储 spark storm HBase
  • Vue3文字实现左右和上下滚动
  • Docker Sybase修改中文编码
  • 【SpringCloud Alibaba】(六)使用 Sentinel 实现服务限流与容错
  • mysql的主从复制
  • 【Golang 接口自动化03】 解析接口返回XML
  • Java+bcprov库实现对称和非对称加密算法
  • 国内最大Llama开源社区发布首个预训练中文版Llama2
  • Qt应用开发(基础篇)——滑块类 QSlider、QScrollBar、QDial
  • 【3-D深度学习:肺肿瘤分割】创建和训练 V-Net 神经网络,并从 3D 医学图像中对肺肿瘤进行语义分割研究(Matlab代码实现)
  • MongoDB文档--架构体系
  • GEE学习03-Geemap配置与安装,arcgis pro自带命令提示符位置等