logoAnt Design X

设计研发组件X MarkdownX SDKX CardX Skill演示国内镜像
  • 介绍
  • 代码示例
    2.0.0
  • 在线体验
  • 主题
  • 流式渲染
  • 组件
    • 总览
    • 聊天增强
    • 数据展示
    • 富文本增强
  • 插件集
    • 总览
    • 公式
    • 自定义插件

流式渲染

处理 LLM 流式返回的 Markdown:语法补全和缓存、动画以及尾缀。

代码示例

API

streaming

参数说明类型默认值
hasNextChunk是否还有后续 chunkbooleanfalse
incompleteMarkdownComponentMap未完成语法的组件映射Partial<Record<Exclude<StreamCacheTokenType, 'text'>, string>>{}
enableAnimation是否启用淡入动画booleanfalse
animationConfig动画参数AnimationConfig{ fadeDuration: 200, easing: 'ease-in-out' }
tail是否启用尾部指示器boolean | TailConfigfalse

TailConfig

属性说明类型默认值
content尾部显示的内容string'▋'
component自定义尾部组件,优先级高于 contentReact.ComponentType<{ content?: string }>-

AnimationConfig

属性说明类型默认值
fadeDuration动画时长(毫秒)number200
easing缓动函数string'ease-in-out'

尾部默认显示 ▋。可通过 content 自定义字符,或通过 component 传入自定义 React 组件实现动画、延迟显示等效果。

tsx
// 自定义尾部组件示例
const DelayedTail: React.FC<{ content?: string }> = ({ content }) => {
const [visible, setVisible] = useState(false);
useEffect(() => {
const timer = setTimeout(() => setVisible(true), 2000);
return () => clearTimeout(timer);
}, []);
if (!visible) return null;
return <span className="my-tail">{content}</span>;
};

debug

属性说明类型默认值
debug是否启用性能监控面板booleanfalse

⚠️ debug 仅限开发环境使用,生产环境请关闭以避免性能开销与信息泄露。

支持的不完整语法

TokenType示例
link[text](https://example
image![alt](https://img...
heading###
table| col1 | col2 |
xml<div class="

最小配置示例

tsx
<XMarkdown
content={content}
streaming={{
hasNextChunk,
enableAnimation: true,
tail: true,
incompleteMarkdownComponentMap: {
link: 'link-loading',
table: 'table-loading',
},
}}
components={{
'link-loading': LinkSkeleton,
'table-loading': TableSkeleton,
}}
/>

FAQ

hasNextChunk 可以一直是 true 吗?

不建议。最后一个 chunk 到达后应切换为 false,否则未完成语法会持续停留在占位状态。

Markdown Source
Rendered Output
语法处理

不完整语法修复与占位

CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code
渲染控制
CodeSandbox Icon
codepen icon
External Link Icon
expand codeexpand code