Skip to content

RichText 富文本 ​

基于 TipTap 的 Vue 3 封装,支持工具栏、选区浮动菜单,以及 html / json 输出。

基础用法 ​

选中文字可出现浮动菜单;工具栏支持标题、列表、链接等。

JSON 输出 ​

{
  "type": "doc",
  "content": [
    {
      "type": "paragraph",
      "content": [
        {
          "type": "text",
          "text": "这是 JSON 输出模式"
        }
      ]
    }
  ]
}

与 Form 联用 ​

API ​

RichText Props ​

属性说明类型默认值必填
modelValue / v-model编辑器内容string | JSONContent | null''否
output输出格式'html' | 'json''html'否
placeholder空态占位string'请输入内容…'否
disabled禁用;可继承 Formbooleanfalse否
editable是否可编辑booleantrue否
minHeight编辑区最小高度string'160px'否
showToolbar显示工具栏booleantrue否
showBubbleMenu显示选区浮动菜单booleantrue否
onImageUpload图片上传回调,返回可访问 URL;未提供则无法插图(file: File) => Promise<string> | string—否

RichText Events ​

事件名说明回调参数
update:modelValue内容变化(value: string | JSONContent) => void
change内容变化(同步 FormItem)(value: string | JSONContent) => void
focus编辑器聚焦(event: FocusEvent) => void
blur编辑器失焦(同步 FormItem)(event: FocusEvent) => void

RichText Slots ​

插槽名说明作用域参数
toolbar自定义工具栏{ editor, openImagePicker }
bubble-menu自定义选区菜单{ editor }

RichText Expose ​

方法 / 属性说明
editorTipTap Editor 实例 Ref
getEditor获取 Editor
openImagePicker打开本地图片选择
focus聚焦编辑器
clear清空内容

基础扩展 ​

StarterKit(标题/加粗/斜体/删除线/下划线/链接/列表/引用/代码块/撤销重做)+ Placeholder + Image。

依赖 ​

请在业务项目安装 TipTap peer 依赖:

bash
pnpm add @tiptap/vue-3 @tiptap/starter-kit @tiptap/extension-placeholder @tiptap/extension-image @tiptap/pm