在React框架中使用Braft Editor集成Table表格的详细教程

news2025/6/2 10:35:53

简介:Braft Editor是一款基于draft-js开发的React富文本编辑器,支持多媒体、自定义样式和扩展功能。其表格扩展模块允许用户插入、调整表格结构,适合需要数据展示的场景(如CMS系统、报表工具)。

1.安装依赖

yarn add braft-editor
yarn add braft-utils
yarn add braft-extensions

 或者

# 安装编辑器核心
npm install braft-editor --save
# 安装表格扩展
npm install braft-extensions --save
# 安装插件工具
npm install braft-utils --save

 安装好后版本号

    "braft-editor": "^2.3.9",
    "braft-extensions": "^0.1.1",
    "braft-utils": "^3.0.13",

2.安装详细文档教程
安装和使用 · 语雀安装使用npm或者yarn来将本编辑器加入到你的项目中...https://www.yuque.com/braft-editor/be/lzwpnr3.完整示例代码

import React from 'react';
import {message} from 'antd';
// 引入编辑器组件
import BraftEditor from 'braft-editor'
import { ContentUtils } from 'braft-utils'
import 'braft-editor/dist/index.css';// 引入编辑器样式
import 'braft-editor/dist/output.css';// 预览样式(可选)
import Table from 'braft-extensions/dist/table';
import 'braft-extensions/dist/table.css'; // 引入表格样式

export default class EditorDemo extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      editorState: BraftEditor.createEditorState(props.dataSource || ''),
      controls: [
        'table', //表格工具
        'font-size', //文字字号选择器
        'font-family', //文字字体选择器
        'line-height', //行高
        'letter-spacing', //字间距
        'text-color', //文字颜色
        'bold', //设置文字加粗
        'italic', //设置文字斜体
        'underline', //设置文字下划线
        'strike-through', //设置文字删除线
        'superscript', //设置文字为上标
        'subscript', //设置文字为下标
        'remove-styles', //清除文字样式
        'emoji', //Emoji表情选择器
        'text-align', //文字对齐方式工具,可通过textAligns属性来指定可以使用哪些对齐方式
        'text-indent', //text-indent	段落缩进工具,最多可缩进6级
        'link', //link	链接插入工具
        'headings', //段落类型(标题1-6、常规)
        'list-ul', //无序列表
        'list-ol', //有序列表
        'blockquote', //引用段落
        'code', //代码块
        'hr', //水平线工具
        'media', //media多媒体插入工具
        'clear', //内容清除工具
        'undo', //撤销操作
        'redo', //重做操作
        'separator', //分割线,连续的多个separator将只显示为1个
      ],
      tableOptions: {
        defaultRows: 2,      // 默认行数
        defaultColumns: 3,   // 默认列数
        withDropdown: true,  // 显示行列选择下拉菜单
        columnResizable: true, // 允许拖动调整列宽
        exportAttrString: 'border="1" style="border-collapse: collapse"', // 输出表格边框
      }
    };
  }
  componentDidMount() {
    const {tableOptions}= this.state;
    BraftEditor.use(Table(tableOptions));
  }

  insertText(str) {
    const newEditorState = ContentUtils.insertHTML(
      this.state.editorState,
      str,
      'paste-html'  // 指定插入模式(避免格式冲突)
    )
    this.setState({ editorState: newEditorState })
  }

  //获取ueditor内容
  getContent() {
    const {editorState} = this.state;
    const htmlContent = editorState.toHTML()
    console.log(htmlContent, '============', this.state.editorState);
    return htmlContent;
  }

  handleEditorChange = (content, editor) => {
    this.setState({editorState: content});
  };

  render() {
    const {dataSource} = this.props;
    const {editorState,controls} = this.state;
    return (
      <div className="my-braeditor">
        <BraftEditor
          placeholder="请输入内容/从wps复制过来"
          controls={controls}
          value={editorState}
          onChange={this.handleEditorChange}
          onSave={this.getContent}
        />
      </div>
    );
  }
}

4.运行效果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2392712.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

带sdf 的post sim 小结

1.SDF文件主要内容 Delays&#xff08;module&#xff0c;device&#xff0c;interconnect&#xff0c;port&#xff09; Timing checks&#xff08;setup&#xff0c;hold&#xff0c;setuphold&#xff0c;recovery&#xff0c;removal&#xff0c;recrem&#xff09; Timing…

深入浅出:Spring IOCDI

什么是IOC IOC IOC(Inversion of Control)&#xff0c;是一种设计思想&#xff0c;在之前的SpringMVC里就在类上添加RestController和Controller注解就是使用了IOC&#xff0c;这两个注解就是在Spring中创建一个对象&#xff0c;并将注解下的类交给Spring管理&#xff0c;Spr…

PlankAssembly 笔记 DeepWiki 正交视图三维重建

manycore-research/PlankAssembly | DeepWiki PlankAssembly项目原理 这个项目是一个基于深度学习的3D重建系统&#xff0c;其核心原理是从三个正交视图的工程图纸中重建出3D形状的结构化程序表示。 核心技术原理 1. 问题定义 PlankAssembly旨在从三个正交视图的工程图纸中…

某验4无感探针-js逆向

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、总体概述二、请求分析1.分析请求流程三、逆向分析四、执行验证总结一、总体概述 本文主要实现用协议过某验4无感探针,相关的链接:aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20vZGVtb3Y0L2ludmlzaWJsZS1…

UHF RFID无源标签的芯片供电原理

作为无源物联网技术中最基础的一环,UHF RFID无源标签已经被广泛用于商超零售、物流仓储、图书档案、防伪溯源等量非常大的应用领域,仅2021年度,全球出货量就超过200亿。在实际应用中UHF RFID无源标签的芯片是究竟依靠什么来供电的呢? UHF RFID无源标签供电特点 1.借助无线…

【NLP入门系列一】NLP概述和独热编码

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 博主简介&#xff1a;努力学习的22级本科生一枚 &#x1f31f;​&#xff1b;探索AI算法&#xff0c;C&#xff0c;go语言的世界&#xff1b;在迷茫中寻找光芒…

洛谷习题V^V

1.帮贡排序 解题思路&#xff1a;按照题意&#xff0c;排序模拟即可 #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std;struct Member {string name;string position;int contribution;int level;…

Wireshark 在 macOS 上使用及问题解决

wireshark概述 Wireshark 是被广泛使用的免费开源网络协议分析软件&#xff08;network protocol analyzer&#xff09;或网络数据包分析工具&#xff0c;它可以让你在微观层面上查看网络上发生的事情。它的主要功能是截取网络数据包&#xff0c;并尽可能详细地展示网络数据包…

不同电脑同一个网络ip地址一样吗?如何更改

想象一下&#xff0c;你住在同一栋公寓楼里&#xff0c;所有住户对外共享一个统一的小区地址&#xff08;类似公网IP&#xff09;&#xff0c;但每家每户又有独立的门牌号&#xff08;类似内网IP&#xff09;。网络世界中的IP地址也遵循这一逻辑&#xff1a;同一局域网内的设备…

微软 Azure AI Foundry(国际版)十大重要更新

2025 年被广泛视为 “AI 智能体元年”。在过去半年&#xff0c;微软密集发布众多创新技术&#xff0c;构建起从基础设施层、开发工具层到场景应用层的完整技术矩阵&#xff0c;加速推动诸多具备自主决策能力的 “超级助理” 智能体落地&#xff0c;形成完整的 AI 赋能生态&…

PostgreSQL如何更新和删除表数据

这节说下怎样更新和删除表数据&#xff0c;当然认识命令了&#xff0c;可以问AI帮忙写。 接上节先看下天气表weather的数据&#xff0c;增加了杭州和西安的数据&#xff1a; 一.UPDATE更新命令 用UPDATE命令更新现有的行。 假设所有 杭州 5月12日的温度低了两度&#xff0c;用…

Golang | 运用分布式搜索引擎实现视频搜索业务

把前面所设计好的搜索引擎引用进来开发一个简单的具体的视频搜索业务。代码结构&#xff1a; handler目录&#xff1a;后端接口&#xff0c;负责接收请求并返回结果&#xff0c;不存在具体的搜索逻辑。video_search目录&#xff1a;具体的搜索逻辑存放在这&#xff0c;包括reca…

【笔记】Trae+Andrioid Studio+Kotlin开发安卓WebView应用

文章目录 简介依赖步骤AS(Andriod Studio)创建项目AS创建虚拟机TRAE CN 修改项目新增按键捕获功能 新增WebViewWebView加载本地资源在按键回调中向WebView注入JS代码 最终关键代码吐槽 简介 使用Trae配合Andriod Studio开发一个内嵌WebView的安卓应用, 在WebView中加载本地资源…

Github上一些使用技巧(缩写、Issue的Highlight)自用

1. GIthub中的一些缩写 LGTM ! 最近经常看到一些迷之缩写&#xff0c;感觉挺有意思的&#xff0c;但是有时候看到一些没见过的缩写还是有点懵逼&#xff0c;不过缩写确实也是很方便去review&#xff0c;这里就记录汇总一下&#xff1b;顺便加了一些git的基操单词&#xff08;加…

TextIn OCR Frontend前端开源组件库发布!

为什么开源 TextIn OCR Frontend 前端组件库&#xff1f; 在 TextIn 社群中&#xff0c;我们时常接到用户反馈&#xff0c;调取 API 进行票据等文件批量识别后&#xff0c;需要另行完成前端工程&#xff0c;实现比对环节。为助力用户节省工程成本&#xff0c;TextIn 团队正式开…

C#中数据绑定的简单例子

数据绑定允许将控件的属性和数据链接起来——控件属性值发生改变&#xff0c;会导致数据跟着自动改变。 数据绑定还可以是双向的——控件属性值发生改变&#xff0c;会导致数据跟着自动改变&#xff1b;数据发生改变&#xff0c;也会导致控件属性值跟着自动改变。 1、数据绑定…

VR 技术在农业领域或许是一抹新曙光​

在科技日新月异的今天&#xff0c;VR(虚拟现实)技术已不再局限于游戏、影视等娱乐范畴&#xff0c;正逐步渗透到各个传统行业&#xff0c;为其带来全新的发展契机&#xff0c;农业领域便是其中之一。VR 技术利用计算机生成三维虚拟世界&#xff0c;给予用户视觉、听觉、触觉等多…

【JVM】Java程序运行时数据区

运行时数据区 运行时数据区是Java程序执行过程中管理的内存区域 Java 运行时数据区组成&#xff08;JVM 内存结构&#xff09; Java 虚拟机&#xff08;JVM&#xff09;的运行时数据区由以下核心部分组成&#xff1a; 线程私有&#xff1a;程序计数器、Java虚拟机栈、本地方…

计算机视觉入门:OpenCV与YOLO目标检测

计算机视觉入门&#xff1a;OpenCV与YOLO目标检测 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 计算机视觉入门&#xff1a;OpenCV与YOLO目标检测摘要引言技术原理对比1. OpenCV&#xff1a;传统图像处理与机器学…

【Prometheus+Grafana实战:搭建监控系统(含告警配置)】

什么是Prometheus和Grafana&#xff1f; Prometheus&#xff1a;一款开源的监控告警工具&#xff0c;擅长时序数据存储和多维度查询&#xff08;通过PromQL&#xff09;&#xff0c;采用Pull模型主动抓取目标指标。Grafana&#xff1a;数据可视化平台&#xff0c;支持多种数据…