Skip to content

Commit da24ac2

Browse files
committed
✨ 优化菜单展开项为0时的交互逻辑 #868
1 parent 0627a0f commit da24ac2

2 files changed

Lines changed: 17 additions & 5 deletions

File tree

src/pages/components/ScriptMenuList/index.tsx

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,20 +177,24 @@ const ListMenuItem = React.memo(
177177
({ item, scriptMenus, menuExpandNum, isBackscript, url, onEnableChange, handleDeleteScript }: ListMenuItemProps) => {
178178
const { t } = useTranslation();
179179
const [isEffective, setIsEffective] = useState<boolean | null>(item.isEffective);
180-
180+
const [isActive, setIsActive] = useState<boolean>(false);
181181
const [isExpand, setIsExpand] = useState<boolean>(false);
182182

183183
const handleExpandMenu = () => {
184184
setIsExpand((e) => !e);
185185
};
186186

187187
const visibleMenus = useMemo(() => {
188+
// 当menuExpandNum为0时,跟随 isActive 状态显示全部菜单
188189
const m = scriptMenus?.group || [];
190+
if (menuExpandNum === 0 && isActive) {
191+
return m;
192+
}
189193
return m.length > menuExpandNum && !isExpand ? m.slice(0, menuExpandNum) : m;
190-
}, [scriptMenus?.group, isExpand, menuExpandNum]);
194+
}, [scriptMenus?.group, isExpand, menuExpandNum, isActive]);
191195

192196
const shouldShowMore = useMemo(
193-
() => scriptMenus?.group?.length > menuExpandNum,
197+
() => menuExpandNum > 0 && scriptMenus?.group?.length > menuExpandNum,
194198
[scriptMenus?.group, menuExpandNum]
195199
);
196200

@@ -201,7 +205,15 @@ const ListMenuItem = React.memo(
201205
};
202206

203207
return (
204-
<Collapse bordered={false} expandIconPosition="right" key={item.uuid}>
208+
<Collapse
209+
activeKey={isActive ? item.uuid : undefined}
210+
onChange={(_, keys) => {
211+
setIsActive(keys.includes(item.uuid));
212+
}}
213+
bordered={false}
214+
expandIconPosition="right"
215+
key={item.uuid}
216+
>
205217
<CollapseItem
206218
header={<CollapseHeader item={item} onEnableChange={onEnableChange} />}
207219
name={item.uuid}

src/pages/popup/App.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ function App() {
253253
for (const unhook of unhooks) unhook();
254254
unhooks.length = 0;
255255
};
256-
}, []);
256+
}, [subscribeMessage]);
257257

258258
const { handleEnableScriptChange, handleSettingsClick, handleNotificationClick } = {
259259
handleEnableScriptChange: (val: boolean) => {

0 commit comments

Comments
 (0)