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

React实现类似Vue的路由监听Hook

React实现类似Vue的路由监听Hook

  • 监听路由变化;
  • React Hook封装,返回回调函数,新旧路由为函数参数;

代码

import { useEffect, useRef } from 'react';
import { useHistory, useLocation } from 'react-router-dom';

/**
 * 监听路由变化
 * @param callback
 */
const useRouteChange = (callback: (prevLocation: string, newLocation: string) => void) => {
  const location = useLocation();
  const history = useHistory();
  const prevLocation = useRef(location.pathname);

  useEffect(() => {
    const unListen = history.listen(newLocation => {
      callback(prevLocation.current, newLocation.pathname);
      prevLocation.current = newLocation.pathname;
    });

    return () => {
      unListen();
    };
  }, [history, callback]);
};

export default useRouteChange;

使用

  const routeChange = useCallback((prevLocation, newLocation) => {
    console.log(`RouteChange:From ${prevLocation} To ${newLocation}`);
  }, []);

  useRouteChange(routeChange);

http://www.kler.cn/a/309110.html

相关文章:

  • 【OceanBase 诊断调优】—— ocp上针对OB租户CPU消耗计算逻辑
  • 深入理解接口测试:实用指南与最佳实践5.0(三)
  • Node.js笔记
  • POI实现根据PPTX模板渲染PPT
  • 矢量拟合(1)Sanathanan–Koerner算法
  • gdb编译教程(支持linux下X86和ARM架构)
  • 在新电脑上将文件推送到已有的 Git 仓库
  • 【编程基础知识】Java命名规范及最佳实践
  • 孙怡带你深度学习(2)--PyTorch框架认识
  • Unity实战案例全解析:PVZ 植物卡片状态分析
  • 【乐企】基础版接口代码实现
  • Spring Boot校园管理系统:技术选型与架构设计
  • Java | Leetcode Java题解之第405题数字转换为十六进制数
  • TS React 项目中使用TypeScript
  • 【Java】synchronized 基础线程安全
  • git 更新LingDongGui问题解决
  • Reactive 编程-Loom 项目(虚拟线程)
  • 1. YOLOv10: Real-Time End-to-End Object Detection
  • Linux进阶系列(三)——重定向、tee、rsync、xargs
  • Android注册广播
  • 开源免费的NAS系统-TrueNAS CORE搭建和使用(保姆级教程)
  • 基于C++实现(MFC)职工工作量统计系统
  • 机器学习--逻辑回归
  • JavaScript如何判断输入的是空格
  • 常见的反爬虫和应对方法
  • 【SQL】数据库详解-标准SQL语句