首页 > 其他分享 >React项目中使用轻量富文本编辑器

React项目中使用轻量富文本编辑器

时间:2024-06-20 16:53:39浏览次数:24  
标签:react 文本编辑 const MyQuillEditor React 编辑器 import 轻量 quill

React项目中使用轻量富文本编辑器

安装

npm install react-quill

创建编辑器组件

// src/MyQuillEditor.js
import React, { useState } from 'react';
import ReactQuill from 'react-quill';
import 'react-quill/dist/quill.snow.css'; // 引入样式

const MyQuillEditor = () => {
  const [value, setValue] = useState('');

  return (
    <div>
      <h2>My Quill Editor</h2>
      <ReactQuill value={value} onChange={setValue} />
    </div>
  );
};

export default MyQuillEditor;

App.js中使用

// src/App.js
import React from 'react';
import MyQuillEditor from './MyQuillEditor';
import './App.css';

const App = () => {
  return (
    <div className="App">
      <header className="App-header">
        <h1>Welcome to Quill Editor</h1>
      </header>
      <main>
        <MyQuillEditor />
      </main>
    </div>
  );
};

export default App;

以上就完成最简单的富文本配置与使用

如果需要自定义功能可以了解更大参数

基本配置参数

  • theme: 设置编辑器的主题,可以是'snow'(默认)或'bubble'
  • modules: 配置编辑器的模块,如工具栏、剪贴板、历史记录等。
  • placeholder: 设置编辑器的占位符文本。
  • readOnly: 设置编辑器是否只读。
  • bounds: 设置编辑器的边界,默认是document.body
  • formats: 定义允许的格式。

参数配置实例:

// src/MyQuillEditor.js
import React, { useState } from 'react';
import ReactQuill from 'react-quill';
import 'react-quill/dist/quill.snow.css'; // 引入样式

const MyQuillEditor = () => {
  const [value, setValue] = useState('');

  const modules = {
    toolbar: [
      [{ 'header': '1' }, { 'header': '2' }, { 'font': [] }],
      [{ 'list': 'ordered' }, { 'list': 'bullet' }],
      ['bold', 'italic', 'underline', 'strike', 'blockquote'],
      [{ 'color': [] }, { 'background': [] }],
      [{ 'align': [] }],
      ['link', 'image'],
      ['clean']
    ],
    clipboard: {
      // toggle to add extra line breaks when pasting HTML:
      matchVisual: false,
    },
    history: {
      delay: 2000,
      maxStack: 500,
      userOnly: true
    }
  };

  const formats = [
    'header', 'font', 'size',
    'bold', 'italic', 'underline', 'strike', 'blockquote',
    'list', 'bullet', 'indent',
    'link', 'image', 'color', 'background', 'align'
  ];

  return (
    <div>
      <h2>My Quill Editor</h2>
      <ReactQuill
        value={value}
        onChange={setValue}
        modules={modules}
        formats={formats}
        placeholder="Compose an epic..."
        theme="snow"
      />
    </div>
  );
};

export default MyQuillEditor;

配置参数详细说明

  • theme: 设置编辑器的主题。

    theme="snow"
    
  • modules: 配置编辑器的模块。

    jsx复制代码const modules = {
      toolbar: [
        [{ 'header': '1' }, { 'header': '2' }, { 'font': [] }],
        [{ 'list': 'ordered' }, { 'list': 'bullet' }],
        ['bold', 'italic', 'underline', 'strike', 'blockquote'],
        [{ 'color': [] }, { 'background': [] }],
        [{ 'align': [] }],
        ['link', 'image'],
        ['clean']  // 清除格式按钮
      ],
      clipboard: {
        matchVisual: false,
      },
      history: {
        delay: 2000,
        maxStack: 500,
        userOnly: true
      }
    };
    
  • formats: 定义允许的格式。

    const formats = [
      'header', 'font', 'size',
      'bold', 'italic', 'underline', 'strike', 'blockquote',
      'list', 'bullet', 'indent',
      'link', 'image', 'color', 'background', 'align'
    ];
    
  • placeholder: 设置编辑器的占位符文本。

    placeholder="Compose an epic..."
    
  • readOnly: 设置编辑器是否只读。

    readOnly={false}
    
  • bounds: 设置编辑器的边界。

    bounds={'.app'}
    

完整的示例组件

结合以上配置参数,下面是一个完整的Quill编辑器组件示例:

// src/MyQuillEditor.js
import React, { useState } from 'react';
import ReactQuill from 'react-quill';
import 'react-quill/dist/quill.snow.css'; // 引入样式

const MyQuillEditor = () => {
  const [value, setValue] = useState('');

  const modules = {
    toolbar: [
      [{ 'header': '1' }, { 'header': '2' }, { 'font': [] }],
      [{ 'list': 'ordered' }, { 'list': 'bullet' }],
      ['bold', 'italic', 'underline', 'strike', 'blockquote'],
      [{ 'color': [] }, { 'background': [] }],
      [{ 'align': [] }],
      ['link', 'image'],
      ['clean']  // 清除格式按钮
    ],
    clipboard: {
      matchVisual: false,
    },
    history: {
      delay: 2000,
      maxStack: 500,
      userOnly: true
    }
  };

  const formats = [
    'header', 'font', 'size',
    'bold', 'italic', 'underline', 'strike', 'blockquote',
    'list', 'bullet', 'indent',
    'link', 'image', 'color', 'background', 'align'
  ];

  return (
    <div>
      <h2>My Quill Editor</h2>
      <ReactQuill
        value={value}
        onChange={setValue}
        modules={modules}
        formats={formats}
        placeholder="Compose an epic..."
        theme="snow"
        bounds={'.app'}
        readOnly={false}
      />
    </div>
  );
};

export default MyQuillEditor;

如果需要学习更多

官网地址:https://quilljs.com/

gitHub:https://github.com/slab/quill

标签:react,文本编辑,const,MyQuillEditor,React,编辑器,import,轻量,quill
From: https://www.cnblogs.com/sxliu414/p/18258997

相关文章

  • 为什么说 React 更新拖慢整个互联网
    React是由Facebook开发并开源的JavaScript库,用于构建用户界面。自2013年发布以来,React已成为前端开发的主流工具之一。然而,尽管React带来了许多开发效率和用户体验的提升,近年来也有声音指出,React的更新可能在某种程度上拖慢了整个互联网。本文将探讨这一观点的背景、原......
  • YOLO家族中谁才是轻量级网络模型的王者,让我们实验探索分析【YOLOv3—YOLOv10】系列,挖
    在我们前面的系列博文中,我们基于YOLOv3-YOLOv10众多系列的YOLO模型开发实践了非常多的检测模型,在以往的项目开发过程中,我们大多是关注单个系列模型下纵深方向的不同参数分支对比实验结果,比较少去站在不同YOLO系列的角度来进行横向的对比分析。又是一年一度的618了,晚上正好有点......
  • react基本概念
    React基本概念前言React是一个由Facebook开发并维护的前端库,用于构建用户界面。它采用组件化的设计思想,使开发者可以通过组合组件构建复杂的应用程序。本篇文章将介绍React的基本概念,帮助初学者快速上手。 1.什么是React?React是一个用于构建用户界面的JavaScrip......
  • react 18 基础教程
    1.React开发环境搭建执行npxcreate-react-app项目名称命令来创建项目2.实现列表渲染在react中可以通过在{}中写入js表达式来执行js代码,所以可以通过如下手段来执行来实现列表的渲染。functionApp(){letlist=[{id:1,name:"Vue"},{id:2,name:"React"},......
  • React之类组件与函数组件的区别
         类组件和函数组件在React中是两种定义UI组件的方式,它们在语法、生命周期方法、状态管理等方面存在一些差异函数组件定义:函数组件是通过一个普通的JavaScript函数定义的,接受props作为参数,并返回一个React元素。特点:简洁、易于阅读和测试。无法使用生命......
  • 从0到1使用vite搭建react项目保姆级教程(持续更新中)
    一、vite创建react项目要使用Vite创建一个React项目,你需要按照以下步骤操作:1、确保你已经安装了Node.js(建议使用最新的稳定版本)。2、使用npm命令安装ViteCLI工具,再来创建项目npmcreatevite@latestmy-vite-app 3、运行上述命令后,按照提示选择“create-react-app”......
  • Java与React轻松导出Excel/PDF数据
    前言在B/S架构中,服务端导出是一种高效的方式。它将导出的逻辑放在服务端,前端仅需发起请求即可。通过在服务端完成导出后,前端再下载文件完成整个导出过程。服务端导出具有许多优点,如数据安全、适用于大规模数据场景以及不受前端性能影响等。本文将使用前端框架React和服务端框架S......
  • Vue 3中的reactive:响应式对象和数组
    ......
  • react 自定义鼠标右键点击事件
    功能:鼠标右键点击节点时,出现“复制”功能,点击其他部位,隐藏“复制”;鼠标右键事件的文案,始终在鼠标点击位置的右下方;点击复制,提示复制成功效果图:代码:const[showRight,setShowRight]=useState(false);constcontextMenu=useRef(null);const[clickX,setClickX]=us......
  • 基于React和Ant Design的公用组件设计与封装
    在现代前端开发中,React与AntDesign(以下简称AntD)是开发企业级应用的常用组合。公用组件的设计与封装对于提高开发效率、减少重复代码以及提升应用的可维护性至关重要。本文将围绕设计原则、组件拆分颗粒度、以及如何在React和AntD项目中进行公用组件的封装展开探讨。一、设计原则......