React 富文本编辑 braft-editor
推荐一种react-富文本编辑器,braft-editor
braft-editor的github:https://github.com/margox/braft-editor
braft-editor的文档:https://www.yuque.com/braft-editor/be/lzwpnr
braft官网:https://braft.margox.cn/
在项目中引用:
# 使用npm安装
npm install braft-editor --save
# 使用yarn安装
yarn add braft-editor
添加引用,然后直接添加组件
1 <span className="form-richText-box">
2 <BraftEditor
3 value={editorValue}
4 placeholder={placeholder}></BraftEditor>
5 </span>
value值、placeholder水印等文本属性都是通用的。
详细的属性,见 文档属性列表
文本的更新
组件渲染时,将html数据转换为富文本支持的对象数据。
var editorValue = BraftEditor.createEditorState(value);
数据变更保存时,将富文本的对象数据转换为Html数据。
const htmlContent = editorValue.toHTML();
1 import React, { Component } from 'react';
2 import './style.less';
3 import BraftEditor from 'braft-editor';
4 import 'braft-editor/dist/index.css';
5
6 interface PropsData {
7 label: string;
8 placeholder: string;
9 value?: string;
10 inputValueChanged: (value: any) => void;
11 }
12 interface StateData {}
13
14 class InputRichTextControl extends Component<PropsData, StateData> {
15 constructor(props) {
16 super(props);
17 this.state = {
18 isInputError: false,
19 };
20 }
21 handleEditorChange = (editorValue) => {
22 const htmlContent = editorValue.toHTML();
23 this.props.inputValueChanged(htmlContent);
24 };
25 render() {
26 const { label, placeholder, value } = this.props;
27 var editorValue = BraftEditor.createEditorState(value);
28 return (
29 <div id="form-richText-group">
30 <div className="input-lable">{label}</div>
31 <BraftEditor
32 className="form-richText-large"
33 value={editorValue}
34 onChange={this.handleEditorChange}
35 placeholder={placeholder}></BraftEditor>
36 </div>
37 );
38 }
39 }
富文本编辑器的控件列表显示调整
比如隐藏多媒体和全屏按钮,怎么操作?
直接定义controls并替换
1 import React, { Component } from 'react';
2 import './style.less';
3 import BraftEditor from 'braft-editor';
4 import 'braft-editor/dist/index.css';
5
6 interface PropsData {
7 label: string;
8 placeholder: string;
9 value?: string;
10 inputValueChanged: (value: any) => void;
11 }
12 interface StateData {}
13
14 class InputRichTextControl extends Component<PropsData, StateData> {
15 constructor(props) {
16 super(props);
17 this.state = { };
18 }
19 render() {
20 const { label, placeholder, value } = this.props;
21 var editorValue = BraftEditor.createEditorState(value);
22
23 const controls:any[] == [
24 'undo', 'redo', 'separator',
25 'font-size', 'line-height', 'letter-spacing', 'separator',
26 'text-color', 'bold', 'italic', 'underline', 'strike-through', 'separator',
27 'superscript', 'subscript', 'remove-styles', 'emoji', 'separator', 'text-indent', 'text-align', 'separator',
28 'headings', 'list-ul', 'list-ol', 'blockquote', 'code', 'separator',
29 'link', 'separator', 'hr', 'separator',
30 // 'media', 'fullscreen',
31 'separator','clear'
32 ]
33 return (
34 <div id="form-richText-group">
35 <div className="input-lable">{label}</div>
36 <BraftEditor
37 className="form-richText-large"
38 value={editorValue}
39 placeholder={placeholder}
40 controls={controls}></BraftEditor>
41 </div>
42 );
43 }
44 }
45 export default InputRichTextControl;

如上已经把多媒体禁用,所以是无法粘贴图片的
另,关于控件列表,支持原有控件类型BuiltInControlType(不修改标题和内容,只控制隐藏显示)、ControlType对象(可以修改标题和内容)、ExtendControlType
它有三个列表属性可以设置:
- controls
- excludeControls
- extendControls
所以要隐藏控件,还可以使用excludeControls来排除控件。
修改如下:
1 import React, { Component } from 'react';
2 import './style.less';
3 import BraftEditor from 'braft-editor';
4 import 'braft-editor/dist/index.css';
5
6 interface PropsData {
7 label: string;
8 placeholder: string;
9 value?: string;
10 inputValueChanged: (value: any) => void;
11 }
12 interface StateData {}
13
14 class InputRichTextControl extends Component<PropsData, StateData> {
15 constructor(props) {
16 super(props);
17 this.state = { };
18 }
19 render() {
20 const { label, placeholder, value } = this.props;
21 var editorValue = BraftEditor.createEditorState(value);
22
23 const excludeControls: any[] = [24 'fullscreen',
25 ];
26 return (
27 <div id="form-richText-group">
28 <div className="input-lable">{label}</div>
29 <BraftEditor
30 className="form-richText-large"
31 value={editorValue}
32 placeholder={placeholder}
33 excludeControls={excludeControls}></BraftEditor>
34 </div>
35 );
36 }
37 }
38 export default InputRichTextControl;
React 富文本编辑 braft-editor的更多相关文章
- kendo ui 富文本编辑控件 Editor 实现本地上传图片,并显示
富文本编辑的组件有很多,大名鼎鼎的KENDO UI中自然也有,但是默认功能中,只能包含网络图片, 而如果要实现本地上传图片,KENDO UI也提供了相应的功能,但必须实现KENDO规定的多个接口, 而 ...
- 基于 React-draft-wysiwyg 实现的 react 富文本编辑器组件 开箱即用
工作中遇到了一个需要做图文详情 的富文本编辑的需求, 于是基于 React-draft-wysiwyg 实现了一个 纯组件, 目前支持 常规文本输入 外部链接图片 以及本地上传图片, 由于是纯组件, ...
- SNF快速开发平台MVC-EasyUI3.9之-ueditor富文本编辑在 asp.net MVC下使用步骤
mvc项目中用到了这个富文本编辑就试着把遇到的问题个使用步骤在这里记录一下,希望大家少走弯路. 1.首先我们先下载net版本的uediot 2.然后把整个文档拷贝到我们的项目中,记得是整个 把下载的文 ...
- django admin富文本编辑kindeditor
最近在做django项目,需要在后台管理系统加入富文本编辑 其实加入富文本编辑很简单,就是导入几个编辑器的js脚本到admin页面内,下面说说怎么做 第一步,下载想要的富文本编辑器如kindedito ...
- laravel富文本编辑和图片上传
---恢复内容开始--- 首先先找到一个适合的编辑器是胜利的一步,选择wangEditor这个编辑器 地址:http://www.wangeditor.com/ 然后选择下载,我是通过网上学习的,所以 ...
- tinymce + vue 富文本编辑
用texterea最多支持换行,如果文本信息想要更加丰富一些,比如增加格式样式,比如增加图片,textarea就爱莫能助了 在网上搜寻了一番,发现tinymce是比较方便好用的一款富文本编辑 http ...
- react富文本编辑器
首先安装两个插件 yarn add react-draft-wysiwyg draftjs-to-html --save 使用的代码如下 import React from 'react' impor ...
- VUE实现富文本编辑以及组件传值的使用总结
VUE实现使用富文本编辑,如下图: 实现这个富文本编辑需要以下步骤: 第一步:安装编辑器组件 npm install vue-quill-editor –-save第二步:创建一个Ue.vue的文件, ...
- 富文本编辑器之游戏角色升级ing
一.前言 想必大家看到这个标题,心中不禁会浮现几个问题: 什么是富文本编辑器? 富文本编辑器和游戏角色有什么关系? 为什么是升级ing? 什么是富文本编辑器--富文本编辑器集成了格式设置.媒体嵌入.社 ...
- 深入理解javascript中的富文本编辑
前面的话 一说起富文本,人们第一印象就是像使用word一样,在网页上操作文档.实际上差不多就是这样.富文本编辑,又称为WYSIWYG (What You See Is What You Get所见即所 ...
随机推荐
- 微信小程序 入门总结篇
页面生命周期 Page({ /** * 页面的初始数据 */ data: { }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { }, ...
- C++ STL的简单应用(vector容器专题)
#include <iostream> #include <string> #include <stdlib.h> #include <vector> ...
- Windows 10 输入法(仅桌面) %100 解决
大家好,今天我遇到了一件非常难受的一件事,那就是 WIndows 自带的输入发问题,无法输入中文!!! 这时我去网上找找解决方案,总结了一下几个: 文件检查 步骤 以管理员身份运行PowerShell ...
- JS判断数据类型的4种方法
4种判断方法分别是: typeof instanceof prototype属性 constructor属性 可判断的类型对比如下图: 实践代码如下: 1 // 构造函数名方法 2 function ...
- Oracle-安装问题:Win10系统离线安装framework3.5报0x8024402c的问题
Oracle-安装问题:Win10系统离线安装framework3.5报0x8024402c的问题 像神州信用政府版本相关的系统都不允许联网,也就需要离线安装下,Net3.5之类的文件 具体步骤可以参 ...
- 21206134-赵景涛-第三次blog总结
一.前言: 本次Blog是对之前发布的PTA题目集的总结性Blog,这几次的作业题量,难度都不大,但都趋近于完成一整个系统,而非只实现部分的功能.题目集九.十也不在给出类图,而是要求自己设计.我认为这 ...
- zip文件自动打包
简单的文件打包 首先是问题 我们有一个文件的文件过大,我需要删除或者压缩,当然我们就是选择压缩 如果是单个我们可以直接使用压缩功能 但是多个呢? 首先获取当前目录下的文件,使用 a=`ls` | te ...
- vlan划分和设置
今天用ensp模拟一个交换机vlan的划分和设置 先上拓扑图: 目标要实现每台电脑都能相互ping通并且都能ping通1.1.1.1/30 简单分析一下,先看交换机sw3,sw3直接和路由器相连,要实 ...
- 网络基础-OSI七层模型
什么是OSI模型 OSI模型(或 Open Systems Interconnection Model开放系统互连模型)是网络中使用的绝对基础模型.这个关键模型提供了一个框架,规定所有联网设备将如何发 ...
- RPA的价值和优势
RPA机器人流程自动化(Robotic process automation):能够代替或者协助人类在计算机.RPA手机等数字化设备中完成重复性工作与任务. 只要预先设计好使用规则,RPA就可以模拟人 ...