跳转到主要内容
Surfaces 让你的扩展在不替换内置组件的情况下,向 Aether 界面的预定义位置添加 UI。每次 surface 注册会定位到一个命名插槽,并贡献一棵声明式 UI 树,Aether 会在该位置与其他已注册内容一并渲染。

API 签名

registerSurface 返回一个清理函数。调用它可移除 surface 注册并触发重新渲染。

可用插槽

SurfaceDefinition 字段

id
string
此 surface 注册的唯一标识符。Aether 用它跟踪并去重同一扩展的注册。若省略,Aether 会根据插槽与注册顺序生成一个。
order
number
多个扩展注册同一插槽时控制渲染顺序。数值越小越先渲染。省略时默认为 0
render
function
工厂函数,接收渲染上下文并返回 ui 节点树。可为同步或 async。请使用 rendertree 之一。
tree
object
省略 render 时使用的静态 ui 节点树。

渲染上下文

每次渲染周期,Aether 会向你的 render 函数传入包括下列字段在内的上下文:

示例

index.ts
调用 aether.invalidate() 可在扩展内部状态变化时强制重新渲染所有 surfaces。Aether 不会在任意扩展侧变更时自动重渲染 surfaces — 仅在存储写入、action 调用与显式 invalidation 时重渲染。
使用 order 确保多个扩展贡献同一插槽时,你的 surface 渲染在正确位置。相同 order 值的注册会按作用域 ID 稳定排序作为决胜规则。