cloudMenu/src/utils/handleGetCurrentLocation.ts
2025-08-20 09:34:05 +08:00

35 lines
1.1 KiB
TypeScript

/**
* 获取当前位置信息的方法
* @description 该方法获得的返回值是从第一个菜单到最后一个菜单, 如果是有n级菜单,
* 那么只有最后一个可被选中, 其余都不可被选中, 都是展开的菜单
* @param currentMenuItem 当前菜单项, 当url中的pathname不在菜单中, 则该值为undefined
* @param indexAllMenuItemById 通过id索引菜单项的映射
* @returns API.MenuItem[] | []
*/
const handleGetCurrentLocation = (
currentMenuItem: API.MenuItem | undefined,
indexAllMenuItemById: IndexAllMenuItemByKey<'id'>,
): API.MenuItem[] | [] => {
let res: API.MenuItem[] = [];
if (!currentMenuItem) return res;
res.push({
id: currentMenuItem.id,
key: currentMenuItem.key,
path: currentMenuItem.path,
label: currentMenuItem.label,
redirect: currentMenuItem.redirect,
});
if (currentMenuItem.pid) {
res = [
...res,
...handleGetCurrentLocation(indexAllMenuItemById[currentMenuItem.pid], indexAllMenuItemById),
];
}
return res.reverse();
};
export default handleGetCurrentLocation;