feat(theme): 支持读取主题query参数
This commit is contained in:
@@ -2,15 +2,31 @@ import "./App.css";
|
||||
import React, { useEffect } from "react";
|
||||
import { Routes } from "react-router-dom";
|
||||
import {handleAuthTokenAndGroupIdFromUrl} from "./utils/auth";
|
||||
import { useTheme } from "@/components/theme-provider";
|
||||
|
||||
const App: React.FC = () => {
|
||||
const { setTheme } = useTheme();
|
||||
|
||||
useEffect(() => {
|
||||
// 在组件挂载时处理URL中的authToken 和 groupId
|
||||
// 在组件挂载时先处理URL中的authToken 和 groupId
|
||||
handleAuthTokenAndGroupIdFromUrl();
|
||||
}, []);
|
||||
|
||||
// 读取并处理URL中的 theme('light'|'dark')参数
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
const themeParam = params.get('theme');
|
||||
if (themeParam === 'light' || themeParam === 'dark') {
|
||||
// 使用 ThemeProvider 的 setTheme 应用主题,并存入本地(storageKey: egret-ui-theme)
|
||||
setTheme(themeParam);
|
||||
|
||||
// 从URL中移除 theme 参数,保持地址整洁
|
||||
const url = new URL(window.location.href);
|
||||
url.searchParams.delete('theme');
|
||||
window.history.replaceState(null, '', url.toString());
|
||||
}
|
||||
}, [setTheme]);
|
||||
|
||||
return (
|
||||
<div className="w-full h-full bg-gray-50">
|
||||
<div className="w-full min-h-dvh bg-background text-foreground">
|
||||
<main>
|
||||
<Routes></Routes>
|
||||
</main>
|
||||
|
||||
Reference in New Issue
Block a user