关于 markstream-react
为 React 18+ 及兼容的 Next 应用提供 Markstream 接入指导,涵盖渲染器选择、流式输出、SSR 边界和组件定制。
主要功能
- 01React 与 Next 渲染器配置
- 02流式输出与历史内容显示
- 03SSR 边界建议
- 04自定义组件映射指导
适用场景
- 01在 React 聊天界面接入 Markstream
- 02渲染流式 AI 输出及完整历史
- 03为 Next.js 选择仅客户端边界
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ simon-he95/ markstream-vue --skill markstream-react安装后在 Claude Code 中输入/markstream-react确认已加载。
附带文件agents/openai.yaml
详细介绍
Markstream React
当宿主应用使用 React 或 Next,且需要安全接入 Markstream 时,使用此技能。
工作流
- 确认代码库使用 React 18+ 或兼容的 Next 宿主,并接受 beta 渲染器 API。
- 安装
markstream-react,以及仅限所需的可选 peer 依赖。 - 从应用 shell 或客户端入口导入
markstream-react/index.css。 - 选择与渲染边界匹配的入口点。
- 普通客户端渲染器使用
markstream-react。 - Next 专用组件界面使用
markstream-react/next。 - 不使用客户端钩子的服务端渲染使用
markstream-react/server。
- 普通客户端渲染器使用
- 从
content开始。- 对于流式输出或高频 AI 输出,保留
content,并优先使用内置的平滑流式渲染。smoothStreaming="auto"是默认值,并会在typewriter={true}或maxLiveNodes <= 0时启用。typewriter仅控制闪烁光标,默认为false。fade控制节点进入和流式文本淡入动画,默认为true。
- 流式输出与恢复历史记录:在聊天 UI 中,同一个渲染器会先开始流式输出,之后在
final={true}时切换为历史记录。- 流式输出:
smoothStreaming="auto"、fade={false}、typewriter={true}。这是保守的视觉与性能选择,并非 API 不兼容。此适配器尚未采用 Vue 3 的有界追加淡入效果,因此在同时启用两者之前,请验证其动画行为。 - 恢复历史记录:
smoothStreaming={false}、fade={true}、typewriter={false}。内容已经完整,节奏控制会拖慢显示速度,但淡入效果能提供精致的进入动画。 - 动态切换:
smoothStreaming={isStreaming ? 'auto' : false}、fade={!isStreaming}。
- 流式输出:
- 仅在使用 worker 预解析内容、共享 AST 存储或自定义 AST 控制时,才改用
nodes+final。 - 请注意,
htmlPolicy现在默认为safe,且 Mermaid 严格模式默认通过mermaidProps启用。
- 对于流式输出或高频 AI 输出,保留
- 遵守 Next 中的 SSR 边界。
- 涉及仅限浏览器的 peer 依赖时,优先使用
use client、带ssr: false的动态导入或其他仅限客户端的边界。
- 涉及仅限浏览器的 peer 依赖时,优先使用
- 优先使用渲染器本地组件,而非自定义解析器。
streamingComponents接收由解析器提供的NodeComponentProps,支持不完整的自定义标签,并自动将其键加入生效的customHtmlTags列表。htmlComponents接收经过清理的 HTML 属性和children;它不会接收解析器节点/加载状态契约。- 对于类型化映射,优先使用
defineStreamingComponents(...)和defineHtmlComponents(...)。 - 将作用域限定的
setCustomComponents用于内置节点覆盖或共享兼容性注册。 - 仅在迁移需要修改 token 或 AST 时,才使用
parseOptions转换。
- 使用最小且有用的开发、构建或类型检查命令进行验证。
默认决策
- 优先接入渲染器,其次清理迁移工作。
- 如果仓库已经使用
react-markdown,请将此技能与markstream-migration搭配使用。 - 对大多数 AI 聊天/令牌流式输出界面,优先使用带内置平滑流式输出的
content。 - 流式输出与历史消息恢复:聊天消息从流式输出切换为历史消息时(例如
final变为true),动态切换属性:流式输出时使用smoothStreaming="auto"、fade={false};历史消息使用smoothStreaming={false}、fade={true}。完整示例请参阅docs/guide/ai-chat-streaming.md。 - 仅当其他层负责解析或 AST 转换时,才切换到
nodes。 - 优先使用渲染器本地的自定义标签映射,而不是修改全局注册表。
- 采用能解决 SSR 问题的最小客户端边界。
- 除非有意从空白内容开始,否则避免对首屏 SSR 内容使用
smoothStreaming={true};自动模式会使用挂载门控。 - 保持
htmlPolicy="safe"和 Mermaid 严格模式,除非需求是保留受信任的旧版渲染行为。 - 如果受信任的界面需要旧版行为,仅在该界面使用
htmlPolicy="trusted"和mermaidProps={{ isStrict: false }},并说明原因。
实用文档
docs/guide/react-quick-start.mddocs/guide/react-installation.mddocs/guide/react-components.mddocs/guide/react-next-ssr.mddocs/guide/react-markdown-migration.mddocs/guide/component-overrides.md
评论
支持 Markdown