2.0.0
Skip to content

介绍 ​

流式友好、可扩展的 Markdown 渲染组件。对齐 @ant-design/x-markdown@2.0.0 的核心能力:公式、代码高亮、Mermaid、流式语法与自定义组件映射。

何时使用 ​

  • 在对话气泡、消息等场景中渲染 Markdown 内容
  • 需要流式输出时配合 streaming 与 useStreaming
  • 需要自定义标题、代码块、Mermaid 等节点时使用 components 映射

更细的页面:

代码演示 ​

基本用法 ​

Hello World

Welcome to XMarkdown!

  • Item 1
  • Item 2
  • Item 3
const a = 1;
基本用法

通过 content 传入 Markdown 字符串即可渲染。

自定义组件映射 ​

Custom Blue Title

Normal H2

Paragraph with bold and italic.

自定义组件映射

通过 components 将 HTML 标签映射为自定义 Vue 组件,可接收 domNode、streamStatus、children 等 props。

流式渲染 ​

Status: idle
流式渲染

使用 streaming 标识流式状态,配合 useStreaming 处理内容与状态。

API ​

完整表格(含 children、paragraphTag、openLinksInNewTab、dompurifyConfig、rootClassName、style 等)见 代码示例 · API。此处列出常用字段:

XMarkdownProps ​

属性说明类型默认值
contentMarkdown 内容string-
childrencontent 的别名string-
streaming流式配置。布尔值表示是否仍在输出;对象支持 hasNextChunk、enableAnimation、animationConfig、incompleteMarkdownComponentMapboolean | StreamingOption-
components将标签名映射为自定义 Vue 组件(如 h1、pre、code、mermaid、think)Record<string, Component>-
paragraphTag段落 HTML 标签,避免自定义块级组件嵌套非法string'p'
plugins插件列表,在解析前对 content 执行 transformany[]-
configmarked 解析配置MarkedConfig-
openLinksInNewTab给所有链接加 target="_blank"booleanfalse
dompurifyConfigDOMPurify 消毒配置DOMPurify.Config-
className根节点类名string-
rootClassNameclassName 的别名string-
style根节点内联样式CSSProperties-

StreamingOption / AnimationConfig ​

字段说明默认
hasNextChunk后面还有 chunk。未闭合语法先不按完整 Markdown 解析false
enableAnimation文本淡入false
animationConfig.fadeDuration淡入时长(毫秒)200
animationConfig.easing缓动'ease-in-out'
incompleteMarkdownComponentMap未完成语法要用的组件名(token 为 link / image / html / emphasis / list / table){}

ComponentProps(自定义组件入参) ​

属性说明类型
domNode解析后的 DOM 节点信息(name、attribs、children)DOMNode
streamStatus自定义标签尚未闭合时为 'loading',闭合后为 'done'。code 可读 data-state'loading' | 'done'
block仅 code:data-block="true" 时为块级代码boolean
children子内容(VNode 或文本)VNode[] | string
其余标准 HTML 属性及 data-* 等Record<string, any>

useStreaming ​

用于配合流式内容的组合式函数。

参数说明类型
content内容 refRef<string>
streaming是否流式中 ref(可选)Ref<boolean>
onComplete流式结束回调() => void
返回值说明类型
displayedContent当前展示内容Ref<string>
status状态:idle | streaming | complete | errorRef<StreamStatus>
isStreaming是否流式中Ref<boolean>

导出 ​

  • XMarkdown - 主组件
  • AnimationText - 文本淡入组件(streaming.enableAnimation)
  • useStreaming - 流式组合式函数
  • parseMarkdown(content, config?) - 解析 Markdown 为 HTML
  • htmlToVNode(html, options?) - 将 HTML 转为 VNode(支持 components、streamStatus)