菜单 (Menu)
大约 3 分钟
菜单 (Menu)
菜单是业务功能的详细入口,使用 MenuWidget.ts
作为该功能的基类。
参数
router
: 响应式变量,表示应用的路由对象。moduleName
: 响应式变量,表示当前应用名称。mode
: 响应式变量,表示当前菜单模式,可选值为 'horizontal' 或 'inline',默认为 'inline'。collapsed
: 响应式变量,表示当前菜单是否展开或收起,默认为false
。collapsed$
: 非响应式变量,用于通知当前应用菜单的展开或收起状态变化。menus
: 响应式变量,表示当前应用所有菜单的平铺结构,默认为空数组。treeNodes
: 响应式变量,表示当前应用菜单的树形结构,默认为空数组。selectedKeys
: 响应式变量,表示当前选中的菜单项的键值数组,默认为undefined
。openKeys
: 响应式变量,表示当前打开的菜单项的键值数组,默认为undefined
。
方法
onModuleChange()
- 类型: 非响应式方法
- 描述: 在模块发生改变时调用,加载当前模块的菜单信息。
- 入参:
moduleName
(String): 模块名称。
protected async onModuleChange(moduleName: string) {}
fetchMenus()
- 类型: 非响应式方法
- 描述: 根据模块名称获取菜单信息。
- 入参:
moduleName
(String): 模块名称。
- 返回值:
menus
(RuntimeMenu[]): 当前应用所有菜单的平铺结构。treeNodes
(TreeNode<RuntimeMenu>
[]): 当前应用菜单的树形结构。
protected async fetchMenus(moduleName: string): Promise<{ menus: RuntimeMenu[]; treeNodes: TreeNode<RuntimeMenu>[] }> {}
onOpenChange()
- 类型: 响应式方法
- 描述: 当菜单折叠/展开时调用,更新当前打开的菜单项的键值数组。
- 入参:
openKeys
(String[]): 当前打开的菜单项的键值数组。
@Widget.Method()
protected onOpenChange(openKeys: string[]) {}
onCollapsedChange()
- 类型: 响应式方法
- 描述: 当菜单折叠/展开时调用,更新当前菜单的展开或收起状态,并通知相关流。
- 入参:
collapsed
(Boolean): 当前菜单的展开或收起状态。
@Widget.Method()
protected onCollapsedChange(collapsed: boolean) {}
onClick()
- 类型: 响应式方法
- 描述: 点击菜单项时调用,执行相应的动作。
- 入参:
node
(TreeNode<RuntimeMenu>
): 当前菜单项的树形结构。
@Widget.Method()
protected async onClick(node: TreeNode<RuntimeMenu>) {}
onSelect()
- 类型: 响应式方法
- 描述: 选择菜单项时调用,更新当前选中的菜单项的键值数组,并执行相应的动作。
- 入参:
node
(TreeNode<RuntimeMenu>
): 当前菜单项的树形结构。
@Widget.Method()
protected async onSelect(node: TreeNode<RuntimeMenu>) {}
executeViewAction()
- 类型: 非响应式方法
- 描述: 执行视图跳转动作。
- 入参:
menu
(RuntimeMenu): 当前菜单项。viewAction
(IViewAction): 视图跳转动作的配置信息。
protected executeViewAction(menu: RuntimeMenu, viewAction: IViewAction) {}
executeServerAction()
- 类型: 响应式方法
- 描述: 执行服务器动作。
- 入参:
menu
(RuntimeMenu): 当前菜单项。serverAction
(IServerAction): 服务器动作的配置信息。
protected async executeServerAction(menu: RuntimeMenu, serverAction: IServerAction) {}
executeUrlAction()
- 类型: 非响应式方法
- 描述: 执行 URL 跳转动作。
- 入参:
menu
(RuntimeMenu): 当前菜单项。urlAction
(IURLAction): URL 跳转动作的配置信息。
protected executeUrlAction(menu: RuntimeMenu, urlAction: IURLAction) {}
handleMenuMapping()
- 类型: 非响应式方法
- 描述: 处理菜单映射。
- 入参:
mapping
(Record<string, unknown>): 菜单映射配置信息。
- 返回值:
paramResult
(Record<string, unknown>): 处理后的映射结果。
protected handleMenuMapping(mapping: Record<string, unknown>) {}
refreshMenuUrlParameters()
- 类型: 非响应式方法
- 描述: 刷新菜单的 URL 参数。
- 入参:
model
(String): 模型名称。action
(String): 动作名称。
protected refreshMenuUrlParameters(model: string, action: string) {}
reloadMaskProcess()
- 类型: 非响应式方法
- 描述: 重新加载菜单。
- 入参:
reloadParameters
(ReloadMaskCallChainingParameters): 重新加载的参数。
protected async reloadMaskProcess(reloadParameters: ReloadMaskCallChainingParameters) {}
$$mounted()
- 类型: 非响应式方法
- 描述: 生命周期钩子,在组件被挂载后调用,初始化路由对象。
protected $$mounted() {}
如何替换
import { MenuWidget, SPI, MaskWidget } from "@kunlun/dependencies";
@SPI.ClassFactory(MaskWidget.Token({ widget: "nav-menu" }))
export class CustomMenuWidget extends MenuWidget {}