生命周期
全局生命周期
- Starting: 初始化,尚未创建业务实例。
- Ready: 首个业务实例创建完成;后续实例不会重新触发。
- Rendered: 标准 UI 完成首次渲染切换,不保证所有异步内容就绪。
- Steady: 标准 UI 在 Rendered 后延时进入,不代表全部异步任务完成。
Facade API
TypeScript
const currentStage = univerAPI.getCurrentLifecycleStage()const disposable = univerAPI.addEvent(univerAPI.Event.LifeCycleChanged, ({ stage }) => { console.log(stage)})事件监听的范围
LifeCycleChanged 监听的是 Univer 的全局阶段。例如,全局已到 Ready 时再加载插件 B,B 会执行 onReady(),但不会因此再次触发全局 Ready 事件。
添加监听器时,回调可能立即收到当前阶段,包括 Starting。如果只是想知道“现在到哪个阶段了”,直接调用 univerAPI.getCurrentLifecycleStage()。
要移除监听器,可以使用返回的 disposable 对象:
TypeScript
disposable.dispose()插件生命周期钩子
插件在实际加载时执行 onStarting(),随后补执行至当前全局阶段的钩子。选择 B 的加载阶段,观察它与 A 的调用顺序。
B 的加载阶段 · Rendered
全局: Starting全局: Starting · 1 / 14
为展示同步钩子的调用顺序,演示已放慢。
通用插件在注册时加载;业务类型插件通常在首次创建对应类型的实例前加载;已启动类型的新插件会延迟批量加载。显式依赖可能让插件提前加载。
同一批插件按依赖顺序、逐阶段同步调用钩子,不等待钩子中的异步任务。访问业务实例、DOM 或资源前,仍需确认对应对象就绪。
你觉得这篇文档如何?