当前位置: 首页 > news >正文

Tiptap中BubbleMenu讲解

Tiptap 的 BubbleMenu 是一个浮动的菜单,通常用于在编辑器中选中文本时提供格式化选项。这个组件会在用户选择文本时显示,并可以定制为提供不同的编辑功能,如加粗、斜体、链接添加等。

1、安装

首先,确保你已经安装了 Tiptap。如果还没有安装,可以通过以下命令安装:

npm install @tiptap/core @tiptap/extension-bubble-menu

2、使用 BubbleMenu

下面是如何在 React 项目中使用 BubbleMenu 的示例:

1、导入所需模块:

import { useEditor, EditorContent } from '@tiptap/react';
import StarterKit from '@tiptap/starter-kit';
import { BubbleMenu } from '@tiptap/react';

2、设置编辑器: 创建一个编辑器实例,通常在一个 React 组件中完成。

const MyEditor = () => {const editor = useEditor({extensions: [StarterKit,],content: '<p>Hello World!</p>',});return editor;
};

3、添加 BubbleMenu: 在编辑器组件中加入 BubbleMenu,并定义需要显示的按钮或功能。

const MyEditor = () => {const editor = useEditor({extensions: [StarterKit,],content: '<p>Hello World!</p>',});if (!editor) {return null;}return (<><EditorContent editor={editor} /><BubbleMenu editor={editor} tippyOptions={{ placement: 'top' }}><button onClick={() => editor.chain().focus().toggleBold().run()} className={editor.isActive('bold') ? 'is-active' : ''}>Bold</button><button onClick={() => editor.chain().focus().toggleItalic().run()} className={editor.isActive('italic') ? 'is-active' : ''}>Italic</button><button onClick={() => editor.chain().focus().toggleUnderline().run()} className={editor.isActive('underline') ? 'is-active' : ''}>Underline</button></BubbleMenu></>);
};

注意事项

条件渲染:确保编辑器实例 (editor) 已经创建后再渲染 BubbleMenu。

按钮激活状态:使用 editor.isActive(‘bold’) 等方法来判断当前状态,从而改变按钮的激活状态。

tippyOptions:BubbleMenu 使用 tippy.js 为底层的浮动提示库,可以传递 tippyOptions 来自定义菜单的位置和行为。


http://www.mrgr.cn/news/14111.html

相关文章:

  • 虚拟内存管理和保护模式
  • SpringBoot配置多个kafka配置
  • 神经网络——CIFAR10小实战
  • RabbitMQ 常见问题与故障排查
  • 奇门WMS-A和金蝶云星空单据接口对接
  • 程序设计训练3.16最大报销额
  • 主机休眠之后 Ubuntu 虚拟机无网络
  • 【有道云-注册安全分析报告】
  • 小程序面试题一
  • 彩色相机拍照,图片时亮时暗
  • 悬浮翻译软件有哪些?试试这些利器
  • 独立站除了Shopify还有什么?
  • 数据库:头歌实验二数据库安全性技术
  • 【网络安全】服务基础第一阶段——第六节:Windows系统管理基础---- DNS部署与安全
  • 从算法到硬件实现:《基于FPGA的数字信号处理》(可下载)
  • 【IoT】将各类遥控器(红外,频射,蓝牙,wifi,Zigbee)等设备接入米家,实现家庭物联网设备控制(以极米Z7X投影仪为例)
  • 骁龙CPU简介
  • gitlab使用
  • 国内外主流的车辆管理系统盘点,你用过哪一款?
  • php邮件系统怎么安装和集成到现有系统中?