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

React项目在ts文件中使用router实现跳转

前言:

        默认你已经进行了router的安装,目前到了配置http请求的步骤,在配置token失效或其他原因,需要实现路由跳转。在普通的 TypeScript 文件中无法直接使用Router的 useNavigate Hook。Hook 只能在 React 组件或自定义 Hook 中调用。

实现方案:

        封装一个路由工具函数

 1、配置router.ts文件

使用模块级变量 _navigate 保存路由函数

// src/utils/router.ts
import { NavigateFunction } from 'react-router-dom';

// 存储路由函数的引用
let _navigate: NavigateFunction | null = null;

// 初始化路由函数
export const setRouter = (navigate: NavigateFunction) => {
  _navigate = navigate;
};

// 暴露
export const router = {
  navigate: (to: string) => {
    if (_navigate) {
      _navigate(to);
    } else {
      console.warn('Router 未初始化!');
    }
  },
};
2、在根组件初始化
// src/App.tsx
import { useNavigate } from 'react-router-dom';
import { setRouter } from './utils/router';

function App() {
  const navigate = useNavigate();
  
  useEffect(() => {
    setRouter(navigate);
  }, [navigate]);

  return <>...</>;
}
3、使用案例
//导入
import { router } from '../utils/router';

// 使用
router.navigate('/login'); // 跳转到登录页
 
http://www.dtcms.com/a/111793.html

相关文章:

  • 搜索与图论 树的广度优先遍历 图中点的层次
  • MusicMint ,AI音乐生成工具
  • bun 版本管理工具 bum 安装与使用
  • oracle账户被锁定了应该怎么办
  • Oracle数据库数据编程SQL<7.2 推荐管理工具:DBeaver Community安装教程>
  • 2021 CCF CSP-S2.括号序列
  • 软件工程(应试版)图形工具总结(二)
  • (二)RestAPI 毛子(Tags)
  • 第15届蓝桥杯省赛python组A,B,C集合
  • stable diffusion部署ubuntu
  • 识别干扰验证码——Python || Tesseract-OCR
  • 【深度学习】CNN简述
  • Talend API Tester
  • 请求被中止: 未能创建 SSL/TLS 安全通道。
  • Nature Communications|马兰戈尼效应构建空心金字塔微阵列制备高灵敏度柔性电容式压力传感器(健康监测/柔性压力传感/柔性电子/人机交互)
  • Spring 核心技术解析【纯干货版】- XXII:Spring 扫描效率提升模块 Spring-Context-Indexer 模块精讲
  • Lock接口方法介绍
  • JavaScript 中那些不常见的 for 循环命名与高阶用法
  • ModuleNotFoundError: No module named ‘matplotlib_inline‘
  • C++进阶知识复习 31~38
  • SSL证书自动化管理(ACME协议)工作流程介绍
  • 小动物多导生理记录仪产品需求定义
  • 12.青龙面板自动化我的生活
  • 01背包问题:详细解释为什么重量维度必须从大到小遍历。
  • SignalR给特定User发送消息
  • Spring event 和 MQ的区别及应用场景
  • 《Linux内存管理:实验驱动的深度探索》【附录】【实验环境搭建 4】【Qemu 如何模拟numa架构】
  • Nginx-日志配置
  • 【家政平台开发(14)】家政平台PC前端(Element plus)开发指南:从集成到组件应用
  • 【备考高项】附录:商标法(2013年修正 73条全)