• 【重点突破】—— React实现富文本编辑器


    前言:富文本编辑器Rich Text Editor, 简称 RTE, 是一种可内嵌于浏览器,所见即所得的文本编辑器。


     

    一、安装插件

    react-draft-wysiwyg: 文本编辑器插件

    draftjs-to-html:文本转换为html的插件

    yarn add react-draft-wysiwyg draftjs-to-html --save
    

    二、富文本编辑器实现

    • pages->rich->index.js: 对应路由/admin/rich
    import React from 'react'
    import {Card, Button, Modal} from 'antd'
    import {Editor} from 'react-draft-wysiwyg'
    import draftjs from 'draftjs-to-html'
    import 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css'
    
    export default class RichText extends React.Component{
        state = {
            showRichText: false,
            editorContent: '',
            editorState: ''
        }
        handleClearContent = () => {  //清空文本
            this.setState({
                editorState: ''
            })
        }
        handleGetText = () => {    //获取文本内容
            this.setState({
                showRichText: true
            })
        }
        onEditorStateChange = (editorState) => {   //编辑器的状态
            this.setState({
                editorState
            })
        }
        onEditorChange = (editorContent) => {   //编辑器内容的状态
            this.setState({
                editorContent
            })
        }
        render(){
            const { editorState, editorContent } = this.state;
            return (
                <div>
                    <Card>
                        <Button type="primary" onClick={this.handleClearContent}>清空内容</Button>
                        <Button type="primary" onClick={this.handleGetText} style={{marginLeft: 10}}>获取html文本</Button>
                    </Card>
                    <Card title="富文本编辑器">
                        <Editor 
                            editorState={editorState}
                            onEditorStateChange={this.onEditorStateChange}
                            onContentStateChange={this.onEditorChange}
                            toolbarClassName="toolbarClassName"
                            wrapperClassName="wrapperClassName"
                            editorClassName="editorClassName"
                            onEditorStateChange={this.onEditorStateChange}
                        />
                    </Card>
                    <Modal 
                        title="富文本"
                        visible={this.state.showRichText}
                        onCancel={() =>{
                            this.setState({
                                showRichText: false
                            })
                        }}
                        footer={null}>
                        {draftjs(this.state.editorContent)}
                    </Modal>
                </div>
            )
        }
    }   

    注:项目来自慕课网  

  • 相关阅读:
    centos : 创建交换分区
    用法记录
    mysql日志清理
    mysql 通过查看mysql 配置参数、状态来优化你的mysql
    [WPF 自定义控件]Window(窗体)的UI元素及行为
    [WPF 自定义控件]为Form和自定义Window添加FunctionBar
    [WPF 自定义控件]让Form在加载后自动获得焦点
    [WPF 自定义控件]简单的表单布局控件
    [WPF 自定义控件]以Button为例谈谈如何模仿Aero2主题
    [WPF 自定义控件]自定义控件的代码如何与ControlTemplate交互
  • 原文地址:https://www.cnblogs.com/ljq66/p/10214495.html
Copyright © 2020-2023  润新知