浏览代码

fix: 左侧菜单收起时点击tab切换会展开子菜单内容

xyh 2 年之前
父节点
当前提交
5f8895c236
共有 2 个文件被更改,包括 10 次插入4 次删除
  1. 6 3
      packages/app/src/pages/home/menu/hooks.tsx
  2. 4 1
      packages/app/src/pages/home/menu/index.tsx

+ 6 - 3
packages/app/src/pages/home/menu/hooks.tsx

@@ -49,7 +49,7 @@ export function useMenu() {
   return data;
 }
 
-export function useMenuState() {
+export function useMenuState(collapsed: boolean) {
   const [openKeys, setOpenKey] = useState<string[]>(['-1']);
 
   function onOpenChange(keys: string[]) {
@@ -75,11 +75,14 @@ export function useMenuState() {
   useEffect(
     function() {
       const menu = pages.find(val => val.id === activeKey);
-      menu && menu.pId !== '0' ? setOpenKey([menu.pId]) : setOpenKey([]);
+      // 查不到菜单,pId不为0,左侧导航收起清空下不操作展开菜单
+      menu && menu.pId !== '0' && !collapsed
+        ? setOpenKey([menu.pId])
+        : setOpenKey([]);
 
       setSelectKey([activeKey]);
     },
-    [activeKey, pages],
+    [activeKey, collapsed, pages],
   );
 
   return [

+ 4 - 1
packages/app/src/pages/home/menu/index.tsx

@@ -7,8 +7,11 @@ import classNames from 'classnames';
 
 const Menu: FC = function() {
   const menus = useMenu();
-  const [{openKeys, selectKey}, {onOpenChange, onClick}] = useMenuState();
   const [collapsed, toggle] = useCollapsedMenu();
+  const [
+    {openKeys, selectKey},
+    {onOpenChange, onClick},
+  ] = useMenuState(collapsed);
 
   return (
     <Layout.Sider width={240} className={css.slider} collapsed={collapsed}>