Skip to content

菜单渲染上下文栈(RenderContext)

系统概览

菜单渲染上下文栈(零依赖叶子)。从 menus/menu.ts 抽出,断开 core → menus 反向边:core 层控件(ui-rows / ui-collapsible / ui-header-toggle)渲染期需注册自更新控件,过去经 menu.tsgetCurrentRenderingMenu 取得 SlideMenu 形成双向环;此处以最小 RenderContext 接口反转依赖——core 只认接口,menus/menu.ts 单向 push/pop SlideMenu 实例。

核心职责

  • RenderContext 接口:registerControl(update, pathHint?)(由菜单 updateControls() 统一驱动刷新)
  • _renderingStack 栈;getCurrentRenderingContext() 取栈顶;pushRenderingContext / popRenderingContext 配对进出

对外 API(节选)

  • getCurrentRenderingContext()
  • pushRenderingContext(ctx) / popRenderingContext()

关键约定

  • 零依赖叶(禁引 menus/);仅实现最小接口
  • push / pop 必须配对(pop 置于 finally
  • pathHint 用于按 key 节流,仅本帧变更才调用 update

与其他子系统关系

  • 被 core 控件(如 ui-header-toggle)经 getCurrentRenderingContext()?.registerControl 使用
  • menus/menu.ts 实现 RenderContext 并在渲染期 push / pop 具体 SlideMenu 实例