富文本编辑器之wangEditor

15 篇文章 1 订阅

富文本编辑器之wangEditor

在公司做项目时,遇到了需要富文本编辑器能够上传图片到服务器,上网找了一些,发现了一个国内开源的富文本编辑器----wangEditor,由于是国内的,文档介绍比较清楚,个人认为上手起来也很方便。如果工作上你有类似需求,不妨可以去官网看看,官网地址

由于现在做的项目前端用的是React,这个编辑器完全支持React ,同时也支持Vue。官网所说:快速接入,配置简单,几行代码即可生成。集成了所有常见功能,无需二次开发。在 Vue React 也可以快速接入。

我是参看该编译器的作者的文章《50 行代码 React Hooks 中使用 wangEditor 富文本编辑器》来进行上手的,下面是我的例子:

import React, { useState, useEffect } from 'react'
import { message } from 'antd';
import '@wangeditor/editor/dist/css/style.css'
import { Editor, Toolbar } from '@wangeditor/editor-for-react'
export default function RichEditor(props) {
    const [editor, setEditor] = useState(null) // 存储 editor 实例
    const defaultContent = [] // 编辑器默认内容,空内容
    const toolbarConfig = {} // 菜单栏配置
    // 编辑器配置
    const editorConfig = {
        placeholder: '请输入内容...',
        onCreated: (editor) => {
            // 这里我是从localStorage中读取,进行回显数据用的,这里应该可以使用props父传子进行回显数据
            let user = JSON.parse(localStorage.getItem('pageInformationContentDetails'));
            // 编辑器创建之后,记录 editor 实例,重要 !!! (有了 editor 实例,就可以执行 editor API)
            if (user !== null)
                editor.children = user;
            setEditor(editor);
        },
        onChange: (editor) => {
            // editor 选区或者内容变化时,获取当前最新的 content
            let content = JSON.stringify(editor.children);
            //editor 选区或者内容变化时,获取当前最新的html格式的内容
            const html = editor.getHtml()
        }
        , MENU_CONF: {}
    }

    //这里是上传图片触发
    editorConfig.MENU_CONF['uploadImage'] = {
        server: 'https://xxxxxx',//这里是上传图片的接口
        onSuccess(file, res) {
            message.success('图片上传成功');
        },
        onFailed(file, res) {
            message.error('图片上传失败,请重试');
        },
        // 上传错误,或者触发 timeout 超时
        onError(file, err, res) {
            message.error('图片上传错误,请重试');
        },
    }



    // 组件销毁时,及时销毁 editor 实例,重要!!!
    useEffect(() => {
        return () => {
            if (editor == null) return
            editor.destroy();
            setEditor(null);

        }
    }, [editor])
    return (
        <div style={{ border: '1px solid #ccc', zIndex: 100 }}>
            {/* 渲染 toolbar */}
            <Toolbar
                editor={editor}
                defaultConfig={toolbarConfig}
                style={{ borderBottom: '1px solid #ccc' }}
            />

            {/* 渲染 editor */}
            <Editor
                defaultConfig={editorConfig}
                defaultContent={defaultContent}
                style={{ height: '500px' }}
            />
        </div>
    )
}

上面上传图片的功能可以参看官方文档–上传图片模块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.ToString()°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值