React 组件
根入口与 /view 都导出视图组件;只有根入口额外导出源码组件 Wikitext。
Warning
这些组件在模块加载时创建 Context,并使用 useId / useMemo,只能在客户端组件中运行。根入口与 /view 的产物顶部带有 "use client" 指令,在 Next.js App Router 等环境中可以直接使用;服务端只调用 /parse 与 /hast。
Wikitext
源码组件在内部完成解析、准备与渲染,只支持同步管线。
属性
行为
- 解析与准备分别用
useMemo缓存,依赖为[parser, source, parseOptions]与[document, prepareOptions]。 - 每次渲染传入新的选项对象会导致重新解析;请固定引用。
- 插件与解析函数必须是纯函数;异步插件会抛
ASYNC_PLUGIN_IN_SYNC_PATH。 - 默认解析器在模块加载时初始化;不需要解析器时使用
/view。
WikitextView
WikitextView 只接收准备完成的渲染快照。渲染期间不解析源码、不运行插件或解析函数。
属性
- 根节点固定为
div.wtr-view。 idPrefix同时影响标题 id、文档内#fragment链接与表格headers。- 每个顶层块包在错误边界内;一个块失败不会影响其他块。
- 视图内部建立语义索引与 HAST 索引,供组件与
WikitextFragment使用。
WikitextFragment
- 必须在
<WikitextView>的 Context 内使用,否则抛错。 nodes必须是当前视图渲染文档中的同一批节点对象;仅 id 相同并不够。- 只渲染能在准备结果 HAST 索引中找到的节点,适合模板参数、文件说明与
ref内容。 - inline 模式无
className时不额外包裹 DOM;有className时使用<span>;block 模式使用wtr-fragment容器。 - 同一视图内重复渲染同一节点会产生重复内容与重复标题 id。
组件覆盖
HTML 组件
按键名映射,例如 p、table、img、a。组件收到经过安全校验的 DOM 属性,以及 HAST 元素、文档和可选的语义节点。
语义组件
所有语义组件都会收到:
额外字段:
优先级:显式语义组件替换整个语义结构;未替换时,默认 HAST 内部的标签继续应用 components;最后回退到原生元素。
自定义模板卡片
自定义链接
Context Hook
- 这些 Hook 必须在
<WikitextView>内使用。 useWikitextLabels()读取渲染快照中的最终文案。useWikitextIds()适合需要在自定义组件中生成锚点或片段链接的场景。
渲染错误
错误边界按顶层 HAST 块隔离。占位内容显示 labels.renderFailed、节点类型与源码。解析与准备错误不会进入错误边界,应由调用方捕获。
相关类型
根入口额外导出视图组件会用到的精选语义类型:WikitextLink、WikitextTemplate、WikitextFile、WikitextReference、WikitextTable、WikitextUnknown 等。完整节点子类型与 AST 工具从 /ast 导入。