Files
testing-tool/components/RoutePersistence.tsx
T
雨霖铃 c848003214 feat(recorder): 实现IndexedDB分块存储录制事件
- 将录制状态中的events数组替换为sessionId,避免内存溢出问题
- 集成IndexedDB工具模块实现事件分块存储功能
- 修改开始录制逻辑以生成会话ID并初始化数据库会话
- 更新停止录制逻辑从数据库流式读取事件并删除会话数据
- 修复content:save-track-events消息类型的拼写错误
- 在RoutePersistence组件中添加路由恢复和保存的成功提示
- 重构popup应用CSS样式文件,移除冗余导航样式代码
2026-02-21 15:27:30 +08:00

46 lines
1.2 KiB
TypeScript

import { useEffect, useRef } from 'react';
import { useLocation, useNavigate } from 'react-router-dom';
import { storage } from '@/utils/storage';
const RoutePersistence = () => {
const location = useLocation();
const navigate = useNavigate();
const isRestored = useRef(false);
useEffect(() => {
const restoreRoute = async () => {
if (isRestored.current) return;
try {
const lastRoute = await storage.get('app/lastRoute');
if (lastRoute && lastRoute !== '/' && location.pathname === '/') {
navigate(lastRoute, { replace: true });
console.log('跳转路由', lastRoute);
}
} catch (err) {
console.error('恢复路由失败', err);
} finally {
isRestored.current = true;
}
};
restoreRoute().then(() => console.info('恢复路由成功'));
}, [location, navigate]);
useEffect(() => {
const saveRoute = async () => {
if (!isRestored.current) return;
await storage.set('app/lastRoute', location.pathname);
console.log('保存路由', location.pathname);
};
saveRoute().then(() => console.info('保存路由成功'));
}, [location]);
return null;
};
export default RoutePersistence;