API 参考

API 参考

按需选择 React、Core 或 Viewer 契约,并了解共用的包与生命周期指引。

渲染出第一个文档之后再使用本参考。选择一个包页面,查看确切的组件、控制器、选项和生命周期约束。

包映射

包用途主要 API
@imposia/reactReact 集成ImposiaPageViewer、ImposiaDocument、ImposiaPublicationViewer 与两个生命周期 Hook
@imposia/core框架无关的分页与出版mountPageDocument、mountPublication、prepareDocument
@imposia/viewer展示已提交的页面mountPageViewer、深链接辅助函数
@imposia/client组合的框架无关入口重新导出 Core 与 Viewer 的主要集成 API

使用 React 包时,导入一次 @imposia/react/styles.css。

选择 API

生命周期与错误

情形结果
首个世代尚未完成current 为 undefined;React 状态为 loading。
提交后更新进行中上一次提交保持可见,并保留在 React 状态中。
更新的任务开始较旧的活动世代以 AbortError 拒绝。
调用方中止相关的世代或导出以 DOM AbortError 拒绝。
提交后更新失败Promise 拒绝;上一次提交仍是当前文档。
控制器销毁工作中止,资源与框架释放,current 清空。

ImposiaError 继承 Error,带 readonly code: string。请把取消与需要上报的失败分开处理:

try {
  await controller.update(nextSource, { signal });
} catch (error) {
  if (error instanceof DOMException && error.name === "AbortError") return;
  if (error instanceof ImposiaError) console.error(error.code, error.message);
  throw error;
}

Viewer 方法通常忽略在当前状态下无法执行的调用。涉及所有权的调用会抛出:页面 Viewer 的 mount 和 refresh 校验 canonical iframe,Publication 导航拒绝过期的导航目标,Reader 选择拒绝其他世代的缩略图,Inspector 选择拒绝其他世代的警告。

On this page