文档地址:https://www.yuque.com/braft-editor/be/lzwpnr
1、安装
# 使用npm安装
npm install braft-editor --save
# 使用yarn安装
yarn add braft-editor
2、官方例子
import React from 'react'
// 引入编辑器组件
import BraftEditor from 'braft-editor'
// 引入编辑器样式
import 'braft-editor/dist/index.css'
export default class EditorDemo extends React.Component {
state = {
// 创建一个空的editorState作为初始值
editorState: BraftEditor.createEditorState(null)
}
async componentDidMount () {
// 假设此处从服务端获取html格式的编辑器内容
const htmlContent = await fetchEditorContent()
// 使用BraftEditor.createEditorState将html字符串转换为编辑器需要的editorStat
this.setState({
editorState: BraftEditor.createEditorState(htmlContent)
})
}
submitContent = async () => {
// 在编辑器获得焦点时按下ctrl+s会执行此方法
// 编辑器内容提交到服务端之前,可直接调用editorState.toHTML()来获取HTML格式的内容
const htmlContent = this.state.editorState.toHTML()
const result = await saveEditorContent(htmlContent)
}
handleEditorChange = (editorState) => {
this.setState({ editorState })
}
render () {
const { editorState } = this.state
return (
<div className="my-component">
<BraftEditor
value={editorState}
onChange={this.handleEditorChange}
onSave={this.submitContent}
/>
</div>
)
}
}
3、在项目中表单里实际应用
1、定义
state={
editorState: BraftEditor.createEditorState(null)
}
2、
<FormItem {...formItemLayout} label="报告内容">
{getFieldDecorator('rptcontent', {
rules: [
{
required: true,
message: '请输入报告介绍',
},
],
})(<BraftEditor
className="my-editor"
placeholder="请输入报告内容"
imageControls={imageControls}
excludeControls={excludeControls}
style={{ border: '1px solid #d9d9d9' }}
media={{ uploadFn: this.myUploadFn }}
/>)}
</FormItem>
3、
/*
**富文本上传图片
*/
myUploadFn = (param) => {
let formData = new FormData();
formData.append('file', param.file);
fetch('/api/common/upload', {
method: 'POST', // or 'PUT'
body: formData,
headers: {
'Blade-Auth': getToken()
}
}).then(res => res.json())
.then(response => {
//console.log('Success:', response)
param.success({
url: response.data.url
})
})
.catch(error => {
//console.error('Error:', error)
});
}
4、
//设置表单内的富文本内容(转换)
this.props.form.setFieldsValue({
pgcontent: BraftEditor.createEditorState(res.data.pgcontent),
})
5、展示富文本内容
state = {
outputHTML: ''
}
//设置
dispatch({
type: 'program/fetchDetail',
payload: { id },
callback: (res) => {
//设置富文本内容
this.setState({
outputHTML: `${BraftEditor.createEditorState(res.data.pgcontent).toHTML()}`
});
}
});
<FormItem {...editLable} label="活动内容" >
<div dangerouslySetInnerHTML={{ __html: outputHTML }}></div>
</FormItem>
4、美化输出内容
// 在展示页面引入css样板文件
import 'braft-editor/dist/output.css'
// 给用于展示HTML内容的容器加上特定的className
<div className="braft-output-content" dangerouslySetInnerHTML={{__html: outputContent}}></div