菜鸟学习笔记之React-Quill富文本编辑器

本文介绍了在React项目中使用React-Quill作为富文本编辑器的经验,强调了在配置toolbar和formats时需保持一致,并分享了如何处理图片上传,避免长base64字符串的方法。在图片上传过程中,通过自定义handler和组件外部的全局函数解决了Quill实例获取问题,同时也指出JavaScript中this指向的重要性。

React-Quill 是Antd推荐使用的富文本编辑器,此文记录一下最近在项目中使用它遇到的一些问题。

首先,大家在百度相关资料时,应当搜索React-Quill,而不是Quill。

github点这里:https://github.com/zenoamaro/react-quill

安装依赖这些就都不说了,只记录干货....

调用示例:

<ReactQuill
   theme="snow"
   value={content || ''}
   onChange={onChange}
   modules={modules}
   formats={formats}
/>

modules 是对编辑器功能的配置,此处是从组件的state中拿出来的,具体配置如下:

   modules: {
        toolbar: {
          container: [
            [{ header: [1, 2, false] }],
            ['bold', 'italic', 'underline', 'strike', 'blockquote'],
            [{ list: 'ordered' }, { list: 'bullet' }],
            ['link', 'image'],
            ['clean'],
          ],
          handlers: {
            image() {
              imageHandler.call(this, props.action);
            },
          },
        },
      },
<think>好的,用户想要在react-quill富文本编辑器中添加修改字体大小的功能。我需要先回忆一下react-quill的相关知识,以及如何扩展它的功能。 首先,react-quill是基于Quill.js的React组件,所以可能需要先了解Quill.js本身的配置。Quill的工具栏可以通过配置来添加各种功能模块,比如字体大小、字体类型等。用户的问题是关于字体大小的,所以需要找到Quill中处理字体大小的模块。 我记得Quill有一个内置的Size模块,可能对应的是字体大小的配置。但默认情况下,可能没有启用或者需要特定的配置。可能需要通过扩展工具栏来添加这个功能。在React中,通常是通过modules和formats的配置来实现的。 然后,用户可能需要自定义字体大小的选项,比如不同的pt值,比如10px、12px等。这时候需要在Quill的配置中注册这些尺寸选项。可能需要使用Quill的register方法,或者通过React组件传递配置。 接下来,我应该考虑如何在react-quill中配置modules,特别是toolbar的handlers或者controls。可能需要添加一个下拉菜单,让用户选择不同的字体大小。这时候,需要确认Quill是否支持这种下拉菜单,或者是否需要自定义一个。 另外,需要注意formats的配置,确保字体大小的格式被正确识别和应用。如果用户没有在formats中包含'size',可能会导致样式无法应用,或者Quill忽略这个格式。 可能的步骤是: 1. 在Quill的工具栏配置中添加size选项。 2. 注册可选的字体大小列表。 3. 确保formats中包含'size'。 4. 在React组件中正确传递这些配置。 但需要查阅一下Quill.js的文档,确认如何注册字体大小。例如,Quill的Size Style是通过一个白名单数组来配置的,可能需要这样写: Quill.register(Quill.import('attributors/style/size'), true); 然后设置size的选项数组,比如['10px', '12px', ...]。 不过,在react-quill中,可能需要通过modules来配置,例如在modules中设置toolbar的handlers,或者在toolbar的数组里加入size选项,并配置对应的值。 另外,用户可能需要自定义CSS,因为Quill生成的样式可能是内联的,或者需要额外的样式表来支持下拉菜单的显示。 还有可能遇到的问题,比如用户添加了配置,但字体大小没有生效,这时候需要检查formats是否包含'size',或者是否有CSS冲突,比如父容器的样式覆盖了字体大小。 总结一下,步骤应该是: - 配置toolbar,添加size下拉菜单。 - 注册可选的字体大小。 - 确保formats包含'size'。 - 可能还需要全局设置Quill的配置,比如注册Size模块。 现在需要将这些步骤转化为具体的代码示例,比如在React组件中如何设置modules和formats,以及可能的全局注册。 此外,还需要考虑用户是否需要自定义字体大小的选项,比如默认的选项可能不符合需求,需要用户自己定义列表。 最后,可能还需要处理清除字体大小的功能,或者与其他格式的兼容性问题。</think>为react-quill添加字体大小功能的实现步骤: $$注意:以下实现基于react-quill@2.0.0+和quill@2.0.0+版本$$ 1. **配置工具栏** ```jsx import ReactQuill from "react-quill"; const FontSizes = ["12px", "14px", "16px", "18px", "20px"]; const modules = { toolbar: { handlers: {}, container: [ [{ "size": FontSizes }], // 下拉菜单配置 // ...其他工具栏按钮 ] } }; const formats = ["size"]; // 必须包含size格式 <ReactQuill modules={modules} formats={formats} /> ``` 2. **全局注册字体配置(关键步骤)** ```js import ReactQuill from "react-quill"; import "react-quill/dist/quill.snow.css"; const Size = ReactQuill.Quill.import("formats/size"); Size.whitelist = FontSizes; // 设置白名单 ReactQuill.Quill.register(Size, true); ``` 3. **添加自定义样式(可选)** ```css .ql-snow .ql-picker.ql-size .ql-picker-label::before, .ql-snow .ql-picker.ql-size .ql-picker-item::before { content: attr(data-value) !important; } ``` **常见问题排查:** 1. 下拉不生效 ➔ 检查是否完成全局注册步骤 2. 样式未应用 ➔ 确保formats数组包含"size" 3. 显示数值错误 ➔ 检查CSS伪元素的内容属性配置 4. 白名单无效 ➔ 确认字体大小格式必须带单位(如`px`) **高级扩展:** ```js // 自定义按钮+输入框 modules.toolbar.handlers.size = function(value) { this.quill.format("size", value || "14px"); }; // 在container配置中添加自定义输入 container: [ [{ size: [ ...FontSizes, "24px" // 添加额外选项 ] }], ["custom-size"] // 自定义按钮 ] ``` 完整实现建议参考Quill.js官方文档中关于`formats/size`的配置说明,同时注意CSS样式作用域的覆盖问题。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值