feat: 实现 React 页面层右键菜单数据联动

- 新增 useContextMenuData Hook 处理右键菜单数据传递
- 重构 Jwt/Base64Converter/TextStatistics/QrCode 页面接收右键数据
- RouterProvider 支持从 URL 参数解析右键菜单数据
- 添加 contextMenu/pendingData 存储键到 StorageSchema
- 添加 useContextMenuData 单元测试(12个测试用例)
This commit is contained in:
雨霖铃
2026-05-20 20:51:11 +08:00
parent 471e17eedf
commit 3b98c9438e
8 changed files with 422 additions and 30 deletions
+19
View File
@@ -14,6 +14,7 @@ import {
getDefaultPageOrder,
getDefaultVisibleFeatureKeys,
} from '@/config/features';
import { saveContextMenuData } from '@/utils/useContextMenuData';
/**
* 校验是否为合法的页面类型
@@ -187,6 +188,24 @@ export function RouterProvider({
.then(() => {
if (!cancelled) {
setIsLoaded(true);
// 检查 URL 参数中的右键菜单数据
if (typeof window !== 'undefined') {
const params = new URLSearchParams(window.location.search);
const feature = params.get('feature') as PageType | null;
const payload = params.get('payload');
if (feature && payload && isValidPage(feature)) {
saveContextMenuData({ featureKey: feature, payload }).catch(console.error);
navigateTo(feature);
// 清理 URL 参数
const url = new URL(window.location.href);
url.searchParams.delete('feature');
url.searchParams.delete('payload');
window.history.replaceState({}, '', url.toString());
}
}
}
})
.catch(console.error);