Editor 富文本编辑器
基于 Tiptap 的富文本编辑器,支持 Markdown
何时使用
- 需要用户输入富文本内容(加粗、列表、图片等)时。
EditorToolbar、EditorBubbleMenu、EditorDragHandle、EditorSuggestionMenu、EditorMentionMenu 提供工具栏、气泡菜单、拖拽手柄等扩展能力。
导入
基础用法
开箱即用
未传默认插槽时,Editor 自动启用顶部工具栏、斜杠命令(输入 /)、@ 提及、:emoji 表情与行拖拽手柄,无需任何配置即可获得完整编辑体验。
各能力可通过 props 独立控制(toolbar / suggestion / mentionItems / emojiItems / dragHandle),详见下方 API。
更多示例
HTML 格式
Markdown 格式
工具栏
气泡菜单
拖拽排序
提及功能(@)
提供 mentionItems 后,输入 @ 自动弹出成员候选列表(支持头像、描述),选中后插入提及标签。
仅启用提及扩展(不提供候选列表)时使用 :mention="true"。
emoji 表情(:)
提供 emojiItems 后,输入 : 自动弹出 emoji 候选列表。
禁用编辑
API
Editor Props
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| modelValue (v-model) | 编辑器内容 | Content | - |
| contentType | 内容类型 | json | html | markdown | 自动推断 |
| placeholder | 占位文字 | string | PlaceholderOptions | - |
| starterKit | StarterKit 配置 | Partial<StarterKitOptions> | - |
| markdown | Markdown 配置 | Partial<MarkdownExtensionOptions> | - |
| image | 图片扩展 | boolean | true |
| mention | 提及扩展 | boolean | Partial<MentionOptions> | true |
| disabled | 禁用编辑 | boolean | false |
| dragHandle | 拖拽手柄 | boolean | true |
| bubbleMenu | 气泡菜单 | boolean | EditorToolbarItem[][] | false |
| toolbar | 顶部工具栏(仅未传默认插槽时生效) | boolean | EditorToolbarItem[][] | true |
| suggestion | 斜杠命令(/)菜单 | boolean | EditorSuggestionMenuItem[] | true |
| mentionItems | @提及候选列表(提供后自动启用) | EditorMentionMenuItem[] | [] |
| emojiItems | emoji(:)候选列表(提供后自动启用) | EditorEmojiMenuItem[] | [] |
| handlers | 自定义处理器 | EditorCustomHandlers | - |
| class | 附加类名 | string | - |
说明:
toolbar/suggestion/dragHandle仅在未传默认插槽(开箱即用模式)时生效;传默认插槽时由插槽完全自定义。contentType未显式指定时自动推断:字符串含 Markdown 语法(标题/列表/引用/代码围栏/表格/链接等)且不含 HTML 标签时按markdown解析,否则按html;对象按json。
Editor Slots
| 名称 | 说明 | 作用域参数 |
|---|---|---|
| default | 编辑器内容区域 | { editor, handlers } |
Editor 仅提供 default 插槽,工具栏、气泡菜单、拖拽手柄等需在插槽内使用对应子组件渲染。
子组件插槽
| 组件 | 插槽 | 说明 | 作用域参数 |
|---|---|---|---|
| EditorToolbar | item | 自定义工具栏项 | { item, index, isActive, isDisabled, onClick } |
| EditorBubbleMenu | default | 自定义气泡菜单内容 | { editor } |
| EditorDragHandle | default | 自定义拖拽手柄 | { onClick } |
导出组件
| 组件 | 说明 |
|---|---|
| Editor | 编辑器主组件 |
| EditorToolbar | 工具栏 |
| EditorBubbleMenu | 气泡菜单 |
| EditorDragHandle | 拖拽手柄 |
| EditorSuggestionMenu | 建议菜单 |
| EditorMentionMenu | 提及菜单 |
| EditorEmojiMenu | 表情菜单 |
EditorContentType
| 类型 | 说明 |
|---|---|
json | Tiptap JSON 格式 |
html | HTML 格式 |
markdown | Markdown 格式 |
