React v4官方推荐的富文本编辑器braft-editor使用

2023-11-16

官方推荐使用两个编辑器其中一个,v5推荐另一个。以v4这个为例。

由于官方文档都是class类组件,使用时不太方便,所以下面是自己写的一个hook函数组件,只实现了基本使用,特殊化的暂未写出。

一、安装

# 使用npm安装
npm install braft-editor --save

# 使用yarn安装
yarn add braft-editor

二、引入

import React from 'react'
// 引入编辑器组件
import BraftEditor from 'braft-editor'
// 引入编辑器样式
import 'braft-editor/dist/index.css'

三、写Hook函数组件(子组件传递给父组件的值,利用props传递回调函数)

        封装的子组件

function EditorDemo(props,ref){
    // 创建初始值,若有编辑功能,父组件传递给子组件富文本编辑器,依据值来判断是否需要数据回显
    const [editorState, setEditorState] = useState(() => {
        if (props.value) {
            return BraftEditor.createEditorState(props.value);
        } else {
            return BraftEditor.createEditorState('');
        }
    });
    // 当富文本编辑器有值时触发,若不为空,则设置给editotState,返回给父组件html格式;若为空,则给'' 表单里添加必填字段
    const handleEditorChange = (editorState: any) => {
        if (!editorState.isEmpty()) {
              setEditorState({ editorState });
              const content = editorState.toHTML();
              props.setDetails(content);
        } else {
              props.setDetails('');
        }
  };
    // 返回组件 基本使用 未添加自定义控件和功能,如需,自行加入
    return (
        <div className='editor-wrapper' style={{ border: '1px solid #d1d1d1' }}>
          <BraftEditor
            value={editorState}
            onChange={handleEditorChange}
          />
        </div>

  );
}

export default EditorDemo

        父组件代码

// 引入子组件
import BraftEditor from './BraftEditor/index'

/**
 * 获取子组件富文本编辑器带标签的内容
 * 这里content 已经是子组件返回的值(带html标签的值)
 */
  const setDetails = (content: string) =>{
    // 下面一句代码 只是把当前子组件返回的值设置给表单name=invoicingRules的Item。然后点击提交时,获取内容
    formRef.current?.setFieldsValue({ invoicingRules: content });
  }


/**
 * 获得父组件的内容,子组件取拿
 */
  const getRules = ()=>{
    formRef.current?.getFieldValue('invoicingRules')
  }


// 这边表单只显示主要的代码块
<ProForm.Item label="开票规则" name="invoicingRules"  >
    <BraftEditor setDetails={setDetails} Rules={getRules}  />
</ProForm.Item>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React v4官方推荐的富文本编辑器braft-editor使用 的相关文章

随机推荐

  • ctfshow-web入门——命令执行(2)(web41-web57)

    命令执行 2 web 41 if isset POST c c POST c if preg match 0 9 a z i c 过滤了数字 字母 大小写 还有一些其他符号 未过滤或运算符 和双引号 eval echo c else hig
  • Gof23设计模式之工厂方法模式和抽象工厂模式

    在java中 万物皆对象 这些对象都需要创建 如果创建的时候直接new该对象 就会对该对象耦合严重 假如我们要更换对象 所有new对象的地方都需要修改一遍 这显然违背了软件设计的开闭原则 如果我们使用工厂来生产对象 我们就只和工厂打交道就可
  • Bootstrap3 多个模态对话框无法显示的问题

    今天帮同事调了一个代码 他们的项目最近在用Bootstrap做开发 突然间 他遇到了一个奇怪的问题 如果一个页面中 有多个Modal对话框的话 排列在第一个的对话框 能够正确显示 第二个 只能导致页面出现MASK层 却不能显示Dialog
  • 数据库作业14:第五章: 数据库完整性 习题 + 存储过程

    今有以下两个关系模式 职工 职工号 姓名 年龄 职务 工资 部门号 其中职工号为主码 Worker Wno Wname Wage Wjob Wsalary Wdept 部门 部门号 名称 经理名 电话号 其中部门号为主码 Dept Dno
  • 2D Fast Marching Computations

    Fast Marching method 跟 dijkstra 方法类似 只不过dijkstra方法的路径只能沿网格 而Fast Marching method的方法可以沿斜线 Level Set Methods and Fast Marc
  • MySQL-索引详解(四)

    作者 小刘在C站 个人主页 小刘主页 每天分享云计算网络运维课堂笔记 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 树高千尺 落叶归根人生不易 人间真情 前言 本次MySQL 索引章节比较多 分为多篇进行发布 本章继续 链接
  • shell的字符串截取

    shell的字符串截取 这里介绍一下shell当中字符串截取的几种方法 假设有变量 var http www aaa com 123 htm 1 号截取 删除左边字符 保留右边字符 echo var 其中 var 是变量名 号是运算符 表示
  • Python学习第六天——函数(一)

    1 为什么用函数 1 代码冗余 程序组织结构不清晰 可读性差 2 扩展性差 2 如何让使用函数 原则 先定义后使用 定义不会执行 但是会检查语法错误 函数名指向内存地址存储代码信息 先通过函数名找到函数的内存地址 然后函数内存地址的 触发代
  • 使用docker安装nginx

    一 获取nginx镜像 1 获取nginx镜像列表 docker search nginx 2 拉取nginx镜像到本地 注 默认选取官方最新镜像 其它版本可以去DockerHub查询 docker pull nginx 3 查看镜像库 获
  • ROS搬运 笔记1

    图概念概述 Nodes 节点 一个节点即为一个可执行文件 它可以通过ROS与其它节点进行通信 Messages 消息 消息是一种ROS数据类型 用于订阅或发布到一个话题 Topics 话题 节点可以发布消息到话题 也可以订阅话题以接收消息
  • linux 下qt的头文件,Qt添加库文件和头文件目录(QCreator)

    在使用QtCreator开发图像处理程序的时候想加入Opencv库来处理图形 添加头文件 需要编辑工程文件夹下的 pro文件在文件中添加以下内容 即可包含头文件的文件夹 INCLUDEPATH D OpenCV2 0 vc2008 incl
  • 电脑安装Chrome OS

    原文地址 https www ithome com html win10 336501 htm 2010年12月7日 谷歌发布了一款桌面操作系统 Chrome OS 关于这款操作系统的新闻 IT之家没少报道过 相信不少读者对这款操作系统比较
  • 闪回表+查看和修改撤销表空间的信息+闪回表操作语法+闪回表的案例

    闪回表 flashback table 1将表回滚到一个过去的时间点或系统改变号scn上 用来快速恢复表的数据 2用户对表数据的修改操作 都记录在撤销表空间中 3需要使用到与撤销表空间相关的undo信息 通过show parameeter
  • 数据分析36计(19):美国生鲜配送平台【Instacart】如何实现按时配送——使用分位数回归...

    往期系列原创文章集锦 数据分析36计 18 Shopify如何使用准实验和反事实来优化产品 数据分析36计 17 Uber的 A B 实验平台搭建 数据分析36计 16 和 A B 测试同等重要的观察性研究 群组研究 VS 病例 对照方法
  • go的timer

    看程序 package main import fmt time func main time AfterFunc 3 time Second func fmt Println come here 1 timer time NewTimer
  • 每日一练(三十七)

    文章目录 3 1 求字符串的子串个数 3 2 判断程序输出 3 3 strlen 实现 3 4 strcmp 实现 3 5 strcat 实现 每日一练合集 3 1 求字符串的子串个数 3 2 判断程序输出 3 3 strlen 实现 in
  • node.js中的url.parse方法详解

    parse 方法接受一个URL字符串 解析它 然后返回一个URL对象 如果urlString不是字符串 则抛出类型错误 如果存在auth属性但无法解码 则会抛出URIError 语法 url parse urlStr parseQueryS
  • 医生如何使用ChatGPT提高工作效率

    文章目录 引言 案例一 快速获取医学知识 案例二 协助患者自我诊断 案例三 辅助临床决策 案例四 提供在线咨询服务 案例五 用病人易于理解的语言总结关键的临床信息 案例六 高效整理医疗文件 案例七 根据患者的文化水平定制患教材料 案例八 面
  • Delaunay三角化实现原理

    一 概述 二 图形化解释 1 超级三角形插入第一个点 2 插入第二个点 3 插入第三个点 4 插入第四个点 5 插入第五个边 6 在超级三角形中移除具有极值的边 三 性质 四 代码 1 伪代码 2 C 实现 3 C 实现 参考 一 概述 本
  • React v4官方推荐的富文本编辑器braft-editor使用

    官方推荐使用两个编辑器其中一个 v5推荐另一个 以v4这个为例 由于官方文档都是class类组件 使用时不太方便 所以下面是自己写的一个hook函数组件 只实现了基本使用 特殊化的暂未写出 一 安装 使用npm安装 npm install