React 在非组件环境切换路由

我的react-router-dom版本是6.16.0。之前在react中是这样配置路由的

App.jsx

import ReactDOM from 'react-dom/client';
import { HashRouter, Route, Routes } from 'react-router-dom';

const root = ReactDOM.createRoot(document.getElementById("app"));
root.render(
    <HashRouter>
       <Routes>
     	   <Route
          	  path={XXX}
          	  element={<Component></Component>}
          	  key={XXX} /> 
       </Routes>
    </HashRouter>
);

然后使用axios做接口拦截,当接口的是响应码是10000的时候,跳转到登录页面(10000表示接口返回token过期),但是像上面这样使用路由,该怎么在组件外面(例如axios的逻辑中)做路由跳转呢。

目前看这种方法好像无法做跳转。

可以使用下面的方式做

router/index.jsx

import { createHashRouter } from "react-router-dom";

export const router = createHashRouter([
  {
    path: "/",
    element: <Component />,
  },
]);

App.jsx

import React, { useEffect } from "react";
import { RouterProvider, createHashRouter } from "react-router-dom";
import { router } from "@/router";

export default () => {
  return (
    <RouterProvider router={router} />
  );
};

然后如果组件外面想切换路由:

就类似这样:

import { router } from "@/router";

router.navigate('/login');

官网地址在这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React中,可以使用一些技术来缓存之前页面的数据,以便在切换回该页面时可以快速加载和显示数据。以下是一些常见的缓存数据的方法: 1. 状态管理库:使用状态管理库(如Redux、MobX)来管理应用的数据状态。通过将数据存储在全局状态中,可以在切换路由时保留数据。当再次返回到之前的页面时,可以直接从状态中获取数据进行显示。 2. 组件内部缓存:在组件内部使用state或者实例变量来缓存数据。当切换路由时,组件被卸载,但是这些数据仍然存在于组件的状态或实例中。再次访问该页面时,可以从组件的状态或实例中获取数据进行展示。 3. 浏览器缓存:使用浏览器的缓存机制(如LocalStorage、SessionStorage、IndexedDB)将数据存储在本地。当切换路由时,可以先从缓存中尝试获取数据,如果存在则使用缓存数据进行展示。注意,使用浏览器缓存时需要考虑数据的有效期和清理策略。 4. 路由级别缓存:一些路由库(如react-router)提供了缓存路由组件的功能。当切换回之前的页面时,路由库会自动从缓存中获取组件并显示。这样可以避免重新渲染和加载数据,提高页面的渲染性能。 需要根据具体的应用场景和需求选择合适的缓存方法。在实现缓存时,还要考虑数据的更新和清理策略,以确保缓存的数据与实际数据保持同步。同时,也要注意缓存数据的大小和性能影响,避免过多的数据存储和加载导致性能问题。 希望对你有所帮助!如有任何疑问,请随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值