BraftEditor富文本编辑器使用
BraftEditor使用总结
这里实现的是,参数管理功能,新建或者编辑的时候会弹出一个Modal。这里使用antdesign实现,然后在里面编辑富文本信息,点击保存提交给后台,或者是取消编辑。如图所示
一.安装
npm install --save @types/braft-editor
二.使用方法
因为是较老的版本,因此很多api在网上已经查找不到了,看了组件的源码,进行简单总结。
①首先初始化是用的initialContent
<div>
<BraftEditor {...editorProps} initialContent={settingValue || ''} />
</div>
②配置基本的参数,editorProps,onChange函数用于获取editor里面的内容,并传递给后台。
const editorProps = {
height: 350,
contentFormat: 'html',
// initialContent: line ? line.introduction : '',
onChange: this.handleChangeEditor,
onRawChange: this.handleRawChange,
media: {
allowPasteImage: true, // 是否允许直接粘贴剪贴板图片(例如QQ截图等)到编辑器
image: true, // 开启图片插入功能
video: true, // 开启视频插入功能
audio: true, // 开启音频插入功能
validateFn: null, // 指定本地校验函数,说明见下文
uploadFn: uploadFn, // 指定上传函数,说明见下文
removeConfirmFn: null, // 指定删除前的确认函数,说明见下文
onRemove: null, // 指定媒体库文件被删除时的回调,参数为被删除的媒体文件列表(数组)
onChange: null, // 指定媒体库文件列表发生变化时的回调,参数为媒体库文件列表(数组)
onInsert: null, // 指定从媒体库插入文件到编辑器时的回调,参数为被插入的媒体文件列表(数组)
},
}
③此功能实现的是弹出一个Modal框里面展示富文本,因此需要在每次打开Modal框的时候做重置内容的操作,在这里因为使用的initialValue只能设置一次,因此改变富文本内容的时候,使用的this.refs.braft,并调用setContent()方法。
showModelHandler = (e) => {
if(this.refs.braft){
this.refs.braft.setContent(this.props.record.settingValue || '<p></p>')
}
this.setState({
visible: true,
});
};
三.完整代码
/*此部分代码是由上一个父页面引入的子组件,作用是弹出Modal框,来编辑参数名称和参数值*/
import React, { Component } from 'react';
import { Modal, Form, Input, message } from 'antd';
import { connect } from 'dva';
import style from '../Part/generalstyle.less';
import BraftEditor from 'braft-editor'
import 'braft-editor/dist/braft.css'
const FormItem = Form.Item;
const formItemLayout = {
labelCol: {
xs: { span: 24 },
sm: { span: 7 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 12 },
md: { span: 5 },
},
};
@connect(state => ({
history: state.getData,
}))
class AddFusSystemParam extends Component {
constructor(props) {
super(props);
this.state = {
visible: false,
contentEditor: '',
};
}
showModelHandler = (e) => {
if(this.refs.braft){
this.refs.braft.setContent(this.props.record.settingValue || '<p></p>')
}
this.setState({
visible: true,
});
};
hideModelHandler = () => {
this.props.form.resetFields();
this.setState({
visible: false,
});
};
okHandler = () => {
const { onOk } = this.props;
this.props.form.validateFields((err, values) => {
if (!err) {
if (typeof (values.settingName) == "undefined" || values.settingName == null) {
values.settingName = '';
}
if (values.id == '') {
delete values.id;
}
if (