| import BraftEditor from 'braft-editor'; |
| import 'braft-editor/dist/index.css'; |
| import React, { useEffect, useState } from 'react'; |
|
|
| const { createEditorState } = BraftEditor; |
|
|
| const RichTextEditor = ({ name, onChange, value, ...rest }) => { |
| const [editor, set] = useState(null); |
|
|
| useEffect(() => { |
| if (value !== undefined) { |
| set(createEditorState(value)); |
| } |
| }, [value]); |
|
|
| const handleChange = editor => { |
| set(editor); |
| |
| |
| }; |
|
|
| const onSave = () => { |
| |
| |
| const htmlContent = editor.toHTML(); |
| if (name) { |
| onChange(name, htmlContent); |
| } else { |
| onChange(htmlContent); |
| } |
| }; |
|
|
| return ( |
| <div style={{ border: '1px solid rgba(0,0,0,0.2)' }}> |
| <BraftEditor |
| contentStyle={{ minHeight: 100, height: 'auto', maxHeight: 500 }} |
| value={editor} |
| onChange={handleChange} |
| onSave={onSave} |
| onBlur={onSave} |
| /> |
| </div> |
| ); |
| }; |
|
|
| export default RichTextEditor; |
|
|