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

在react中使用wangeditor富文本

官方文档

wangeditor5在线文档

 依赖安装(react框架)

yarn add @wangeditor/editor
# 或者 npm install @wangeditor/editor --saveyarn add @wangeditor/editor-for-react
# 或者 npm install @wangeditor/editor-for-react --save
在React 中使用wangEditor
~ 如果要自己动手开发,可参考 wangEditor-with-react 。
~ 如果想要用现成的插件,可参考 wangeditor-for-react 。
~ 用于Vue 和React可能会需要销毁编辑器,可参考销毁编辑器。

 页面的引用

import E from 'wangeditor'
import '@wangeditor/editor/dist/css/style.css' // 引入 cssconst editor = new E("节点标签")  //绑定节点
editor.create()  //富文本被创建后,文本是默认居中显示的。而 wangeditor 也没有文本对齐相关的配置项,所以要改变初始文本的显示位置只有通过 css 样式改变同时存在多个编辑器(每个编辑器设置自己的节点标签并创建,互不干扰)
const editor1 = new E("第一个节点标签")
editor1.create()
const editor2 = new E("第二个节点标签")
editor2.create()

 配置项

 自定义菜单

editor.config.menus = [  //自定义菜单栏显示的菜单及顺序'head',  // 标题'bold',  // 粗体'fontSize',  //字号'fontName',  //字体'italic',  // 斜体'underline',  //下划线'strikeThrough',  //删除线'indent',  //缩进'lineHeight',  //行高'foreColor',  //文字颜色'backColor',  //文字背景颜色'link',  //链接,插入一个链接地址,如果填写了描述,则高亮显示描述。若没有,则高亮显示链接'list',  // 序列(有序列表、无序列表)'todo',  //待办事项'justify',  // 对齐方式'quote',  //引用'emoticon',  //表情'image',  //插入图片'video',  //插入视频'table',  //表格'code',  //代码'splitLine',  //分割线'undo',  //撤销'redo' //恢复
]  editor.config.excludeMenus = ['emoticon', 'video']  //自定义剔除不需要的菜单功能

配置颜色(自定义菜单栏中文字颜色、背景颜色的可用颜色)

editor.config.colors = ['#000', '#eee']

配置可用字号

editor.config.fontSizes = {'x-small': { name: '10px', value: '1' } //此外还有 'small', 'normal', 'large', 'x-large', 'xx-large', 'xxx-large'
}

粘贴过滤(不适用于 IE11)

// 关闭粘贴样式的过滤(编辑器会默认过滤掉粘贴文本的样式)
editor.config.pasteFilterStyle = false// 忽略粘贴内容中的图片
editor.config.pasteIgnoreImg = true// 自定义处理粘贴的文本内容(调用此方法,没有return的话粘贴的内容会被阻止)
editor.config.pasteTextHandle = function(pasteStr) {}  //pasteStr 表示粘贴的文本内容

常用方法

// onchange
editor.config.onchange = function(newHtml) {}  //newHtml 是编辑框内容发生改变后得到的最新的 htmleditor.config.onchangeTimeout = 500  //配置触发 onchange 的时间频率,默认为 200ms// onSelectionChange:用户选区操作(鼠标选中文字,ctrl+a全选等)会自动触发
editor.config.onSelectionChange = function(newSelection) {}  //newSelection 是一个对象,包含 text(当前选择文本)、html(当前选中的 html)、selection(原生 selection 对象)// onfocus 和 onblur:聚焦和失焦时自动触发,获得的参数都是最新的 html 内容
editor.config.onfocus = function(newHtml) {}
editor.config.onblur = function(newHtml) {}// 图片上传
editor.config.uploadImgServer = '/upload' // 配置服务端接口(服务端接口需返回 application/json 格式)
// 限制图片大小和类型
editor.config.uploadImgMaxSize = 2 * 1024 * 1024  //默认限制为 5M
editor.config.uploadImgAccept = ['jpg', 'jpeg']  //默认限制为 ['jpg', 'jpeg', 'png', 'gif', 'bmp'],设置为空数组时表示不限制
// 限制一次最多上传几张图片
editor.config.uploadImgMaxLength = 5

 代码展示

 函数组件写法

import '@wangeditor/editor/dist/css/style.css' // 引入 css
import React, { useState, useEffect } from 'react'
import { Editor, Toolbar } from '@wangeditor/editor-for-react'function MyEditor({defaultHtml,updateHtml}) {const [editor, setEditor] = useState(null) // 存储 editor 实例const [html, setHtml] = useState(defaultHtml) // 编辑器内容useEffect(() => {updateHtml(html)}, [html])const toolbarConfig = {}const editorConfig = {placeholder: '请输入内容...',}// 及时销毁 editor ,重要!useEffect(() => {return () => {if (editor == null) returneditor.destroy()setEditor(null)}}, [editor])return (<><div style={{ border: '1px solid #ccc', zIndex: 100,height:'350px',padding:'1vh 0', }}><Toolbareditor={editor}defaultConfig={toolbarConfig}mode="default"style={{ borderBottom: '1px solid #ccc' }}/><EditordefaultConfig={editorConfig}value={html}onCreated={setEditor}onChange={editor => setHtml(editor.getHtml())}mode="default"style={{ height: '50%', 'overflow-y': 'hidden' }}/></div></>)
}export default MyEditor;

类组件写法

import '@wangeditor/editor/dist/css/style.css' // 引入 css
import { React } from 'react'
import { Editor, Toolbar } from '@wangeditor/editor-for-react'let editor = null
class MyEditor extends React.PureComponent {contructor(props){super(props)this.state={editorContent: '',deitorDom: null,editorConfig: {placeholder: '请输入内容...',}}}componentDidMount(){editor.config.menus = [  //自定义菜单栏显示的菜单及顺序'head',  // 标题'bold',  // 粗体'fontSize',  //字号'fontName',  //字体'italic',  // 斜体'underline',  //下划线'strikeThrough',  //删除线'indent',  //缩进'lineHeight',  //行高'foreColor',  //文字颜色'backColor',  //文字背景颜色'link',  //链接,插入一个链接地址,如果填写了描述,则高亮显示描述。若没有,则高亮显示链接'list',  // 序列(有序列表、无序列表)'todo',  //待办事项'justify',  // 对齐方式'quote',  //引用'emoticon',  //表情'image',  //插入图片'video',  //插入视频'table',  //表格'code',  //代码'splitLine',  //分割线'undo',  //撤销'redo' //恢复]editor.config.onChange = (html) => {this.setState({editorContent: html})}editor.config.onChange = (html) => {this.setState({editorContent: html})}}return (<><div style={{ border: '1px solid #ccc', zIndex: 100,height:'350px',padding:'1vh 0', }}><Toolbareditor={editor}defaultConfig={toolbarConfig}mode="default"style={{ borderBottom: '1px solid #ccc' }}/><EditordefaultConfig={this.state.editorConfig}value={this.state.html}onCreated={setEditor}mode="default"style={{ height: '50%', 'overflow-y': 'hidden' }}/></div></>)
}export default MyEditor;

wangEditor使用踩坑记录

 http://t.csdnimg.cn/L3LpV

相关文章:

在react中使用wangeditor富文本

官方文档 wangeditor5在线文档 依赖安装&#xff08;react框架&#xff09; yarn add wangeditor/editor # 或者 npm install wangeditor/editor --saveyarn add wangeditor/editor-for-react # 或者 npm install wangeditor/editor-for-react --save在React 中使用wangEditor …...

拉提查合创5步玩转git工具协作代码开发

1 工具使用场景 开发团队使用git版本管理工具&#xff0c;进行协作代码开发过程中&#xff0c;最常用的场景为&#xff1a; &#xff08;1&#xff09;拉取代码 将git远端仓库最新代码拉取到本地。 &#xff08;2&#xff09;提交代码 将本地新增修改的代码提交至git远端仓库中…...

React特点

React 是一个用于构建用户界面的 JavaScript 库&#xff0c;由 Facebook 开发并维护。React 的特点主要体现在以下几个方面&#xff1a; 声明式&#xff08;Declarative&#xff09;&#xff1a;React 使你能够以一种声明的方式来描述你的 UI&#xff0c;这使得代码更加容易理解…...

鸿蒙(HarmonyOS)自定义Dialog实现时间选择控件

一、操作环境 操作系统: Windows 11 专业版、IDE:DevEco Studio 3.1.1 Release、SDK:HarmonyOS 3.1.0&#xff08;API 9&#xff09; 二、效果图 三、代码 SelectedDateDialog.ets文件/*** 时间选择*/ CustomDialog export struct SelectedDateDialog {State selectedDate:…...

学习008-02-04-08 Localize UI Elements(本地化UI元素)

Localize UI Elements&#xff08;本地化UI元素&#xff09; This lesson explains how to localize an XAF application. It describes how to translate UI elements into German and create a multi-language application. 本课介绍如何本地化XAF应用程序。它描述了如何将U…...

如何系统的学习C++和自动驾驶算法

给大家分享一下我的学习C和自动驾驶算法视频&#xff0c;收藏订阅都很高。打开下面的链接&#xff0c;就可以看到所有的合集了&#xff0c;订阅一下&#xff0c;下次就能找到了。 【C面试100问】第七十四问&#xff1a;STL中既然有了vector为什么还需要array STL中既然有了vec…...

typescript 定义类

/* js class 和 ts class 的区别 ---------------------------- | 语言 | js | ts | ---------------------------| | 公有 | 有 | jspublic | ---------------------------| | 私有 | 无 | private | ---------------------------| | 静态 | …...

认证授权概述和SpringSecurity安全框架快速入门

1. 认证授权的概述 1.1 什么是认证 进入移动互联网时代&#xff0c;大家每天都在刷手机&#xff0c;常用的软件有微信、支付宝、头条、抖音等 以微信为例说明认证的相关基本概念。在初次使用微信前需要注册成为微信用户&#xff0c;然后输入账号和密码即可登录微信&#xff0c…...

docker常用命令集锦

目录 一、查看版本信息 1.1 查看 Docker CLI 版本&#xff1a; 1.2 查看 Docker 详细版本信息&#xff1a; 1.3 查看 Docker 系统信息&#xff1a; 二、进入和退出容器 2.1 进入容器&#xff1a; 2.2 退出容器&#xff1a; 2.3 查看容器日志&#xff1a; 2.4 查看容器的…...

学习Java的日子 Day56 数据库连接池,Druid连接池

Day56 1.数据库连接池 理解&#xff1a;池就是容器&#xff0c;容器中存放了多个连接对象 使用原因&#xff1a; 1.优化创建和销毁连接的时间&#xff08;在项目启动时创建连接池&#xff0c;项目销毁时关闭连接池&#xff09; 2.提高连接对象的复用率 3.有效控制项目中连接的…...

如何实现PostgreSQL对某一张表的WAL日志进行记录

PostgreSQL 没有内置的 binlog&#xff08;binary log&#xff09;机制像 MySQL 那样。它使用 Write-Ahead Logging (WAL) 来记录数据库的变更。要将这些变更记录到某张表中&#xff0c;通常可以使用逻辑复制&#xff08;Logical Replication&#xff09;和触发器&#xff08;T…...

机器学习数学基础(2)--最大似然函数

声明&#xff1a;本文章是根据网上资料&#xff0c;加上自己整理和理解而成&#xff0c;仅为记录自己学习的点点滴滴。可能有错误&#xff0c;欢迎大家指正。 在机器学习和统计学领域中&#xff0c;似然函数&#xff08;Likelihood Function&#xff09;是一个至关重要的概念。…...

详解 @RequestHeader 注解在 Spring Boot 中的使用

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…...

C# 表达式树的简介与说明

文章目录 1. 表达式树是什么&#xff1f;2. 表达式树的基本组成3. 构建表达式树的步骤4. 表达式树的使用场景5. 示例代码6. 总结 在 C# 编程中&#xff0c;表达式树&#xff08;Expression Tree&#xff09;是一个强大的概念&#xff0c;它允许我们以代码的形式表示运行时的代码…...

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第六十三章 输入子系统实验

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…...

[补题记录]Leetcode 15. 三数之和

传送门&#xff1a;三数之和 思路 为了去重&#xff0c;需要先排序。 排序之后&#xff0c;显然每一个 n u m s [ i ] nums[i] nums[i] 就可以作为三数之中的第一个数。 因此&#xff0c;对于每一个 i i i&#xff0c;第二、三个数只能在 [ i 1 , n ] [i 1, n] [i1,n]…...

什么是sql注入攻击,如何预防介绍一下mysql中的常见数据类型

什么是sql注入攻击&#xff0c;如何预防 sql注入攻击指的是应用程序对用户输入数据的合法性没有判断或者过滤不严格&#xff0c;在sql语句中插入任意的恶意语句进行非法操作。 预防方式1&#xff1a;使用预编译语句比如PrepareStatement&#xff0c;用户输入的所有数据都以参数…...

史上最全的Seata教学并且连接springcloudAlibaba进行使用

来都来了点个赞收藏一下在走呗~~&#x1f339;&#x1f339;玫瑰 一、Seata是什么 Seata&#xff08;Simple Extensible Autonomous Transaction Architecture&#xff0c;简单可扩展自治事务框架&#xff09;是一种分布式事务解决方案&#xff0c;旨在解决分布式系统中的事务…...

InternLM Git 基础知识

提交一份自我介绍。 创建并提交一个项目。...

【Unity模型】古代亚洲建筑

在Unity Asset Store上&#xff0c;一款名为"Ancient Asian Buildings Pack"&#xff08;古代亚洲建筑包&#xff09;的3D模型资源包&#xff0c;为广大开发者和设计师提供了一个将古代亚洲建筑风格融入Unity项目的机会。本文将详细介绍这款资源包的特点、使用方式以…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”

案例&#xff1a; 某医药分销企业&#xff0c;主要经营各类药品的批发与零售。由于药品的特殊性&#xff0c;效期管理至关重要&#xff0c;但该企业一直面临效期问题的困扰。在未使用WMS系统之前&#xff0c;其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...

python打卡day49@浙大疏锦行

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...

十二、【ESP32全栈开发指南: IDF开发环境下cJSON使用】

一、JSON简介 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;具有以下核心特性&#xff1a; 完全独立于编程语言的文本格式易于人阅读和编写易于机器解析和生成基于ECMAScript标准子集 1.1 JSON语法规则 {"name"…...