chore: 📌 细微调整

This commit is contained in:
Stev_Wang
2026-01-04 11:18:00 +08:00
parent b2ca0d86f2
commit c962fac20e
2 changed files with 19 additions and 2 deletions

View File

@@ -28,8 +28,13 @@ const AdminLayout = () => {
const { message } = App.useApp(); const { message } = App.useApp();
const { themeMode, toggleTheme } = useThemeStore(); const { themeMode, toggleTheme } = useThemeStore();
// 跟踪用户是否手动修改过 openKeys
const [userInteracted, setUserInteracted] = useState(false);
// 用户手动设置的 openKeys
const [userOpenKeys, setUserOpenKeys] = useState<string[]>([]);
// 根据当前路径计算应该展开的菜单 // 根据当前路径计算应该展开的菜单
const openKeys = useMemo(() => { const defaultOpenKeys = useMemo(() => {
const path = location.pathname; const path = location.pathname;
if (path.startsWith('/admin/users')) { if (path.startsWith('/admin/users')) {
return ['user']; return ['user'];
@@ -37,6 +42,17 @@ const AdminLayout = () => {
return []; return [];
}, [location.pathname]); }, [location.pathname]);
// 最终使用的 openKeys如果用户手动修改过使用用户的设置否则使用默认值
const openKeys = useMemo(() => {
return userInteracted ? userOpenKeys : defaultOpenKeys;
}, [userInteracted, userOpenKeys, defaultOpenKeys]);
// 处理菜单展开/收起
const handleOpenChange = (keys: string[]) => {
setUserInteracted(true);
setUserOpenKeys(keys);
};
const handleLogout = async () => { const handleLogout = async () => {
try { try {
await adminAuthService.logout(); await adminAuthService.logout();
@@ -97,6 +113,7 @@ const AdminLayout = () => {
mode="inline" mode="inline"
selectedKeys={[location.pathname]} selectedKeys={[location.pathname]}
openKeys={openKeys} openKeys={openKeys}
onOpenChange={handleOpenChange}
items={menuItems} items={menuItems}
onClick={({ key }) => navigate(key)} onClick={({ key }) => navigate(key)}
/> />

View File

@@ -82,4 +82,4 @@ export const getThemeByMode = (mode: ThemeMode): ThemeConfig => {
}; };
// 默认主题配置(向后兼容) // 默认主题配置(向后兼容)
export const appTheme: ThemeConfig = darkTheme; export const appTheme: ThemeConfig = lightTheme;