探索 Tiptap V3 的最新功能

插入和上传图片的按钮

一个用于在编辑器中插入和上传图片的按钮。

安装

您可以通过 Tiptap CLI(适用于 Vite 或 Next.js)添加该组件

npx @tiptap/cli add image-upload-button

手动集成

对于非 Vite 或 Next.js 的框架,请从 开源代码库 手动添加该组件。

导入样式

该组件需要您导入我们添加到 styles/keyframe-animation.scssstyles/_variables.scss 的样式。

用法

import { EditorContent, EditorContext, useEditor } from '@tiptap/react'
import { StarterKit } from '@tiptap/starter-kit'
import { Image } from '@tiptap/extension-image'
import { ImageUploadButton } from '@/components/tiptap-ui/image-upload-button'
import { ImageUploadNode } from '@/components/tiptap-node/image-upload-node'
import { handleImageUpload, MAX_FILE_SIZE } from '@/lib/tiptap-utils'

import '@/components/tiptap-node/image-node/image-node.scss'
import '@/components/tiptap-node/paragraph-node/paragraph-node.scss'

export default function MyEditor() {
  const editor = useEditor({
    immediatelyRender: false,
    extensions: [
      StarterKit,
      Image,
      ImageUploadNode.configure({
        accept: 'image/*',
        maxSize: MAX_FILE_SIZE,
        limit: 3,
        upload: handleImageUpload,
        onError: (error) => console.error('上传失败:', error),
      }),
    ],
    content: `
        <p>点击按钮上传图片。</p>
        `,
  })

  return (
    <EditorContext.Provider value={{ editor }}>
      <div className="tiptap-button-group" data-orientation="horizontal">
        <ImageUploadButton text="添加" />
      </div>

      <EditorContent editor={editor} role="presentation" />
    </EditorContext.Provider>
  )
}

属性

名称类型默认值描述
editorEditor | nullnullTiptap 编辑器实例
extensionNamestring'imageUpload'图像上传扩展的名称
textstring-图标旁边要显示的文本

需求

使用的引用组件

  • use-tiptap-editor(钩子)
  • button(原始组件)
  • image-plus-icon(图标)