React中的wangeditor富文本编辑器

这边配置简单带过,主要是记录一下图片如何插入

工具栏的配置

  // 工具栏配置
  const toolbarConfig = {
   //你不要的
    excludeKeys: [
      'group-video', //视频
    ],
   //你要的
    // toolbarKeys: [
    //   'headerSelect', //正文
    //   'blockquote', //引号
    //   '|', //分隔线
    //   'bold', //加粗
    //   'underline', //下划线
    //   'italic', //倾斜
    //   'color',
    //   'bgColor',
    //   '|',
    //   'fontSize',
    //   'fontFamily',
    //   'lineHeight',
    //   '|',
    //   'bulletedList',
    //   'numberedList',
    //   'uploadImage',
    //   // 'image', // 插入图片
    //   // 'table', // 表格
    //   // 'undo', // 撤销
    //   // 'redo', // 重复
    // ],
  }

  // 编辑器配置
  const editorConfig = { MENU_CONF: {} }
  editorConfig.placeholder = '请输入内容...'

图片上传和插入的editorConfig配置

 主要是在constomUpload自带的函数(完成上传时触发),需要通过自己配置接口,通过FormData来进行图片文件上传格式的转化

  editorConfig.MENU_CONF['uploadImage'] = {
    // server: `${API_URL}api/files/upload`,
    // 自定义增加 http  header
    // headers: {
    //     Accept: 'text/x-json',
    //     otherKey: 'xxx'
    // },
    // 自定义上传参数,例如传递验证的 token 等。参数会被添加到 formData 中,一起上传到服务端。
    // meta: {
    //   userName: 'yunjin_file_upload',
    //   password: 'yunjin_upload_password',
    //   domain: 'product',
    //   secret: 'N',
    // },
    // 单个文件的最大体积限制,默认为 2M
    maxFileSize: 10 * 1024 * 1024, // 10M
    // 最多可上传几个文件,默认为 100
    maxNumberOfFiles: 10,
    // 小于该值就插入 base64 格式(而不上传),默认为 0
    //base64LimitSize: 5 * 1024 // 5kb
    // 自定义插入图片
    customInsert(res, insertFn) {
      // res 即服务端的返回结果
      console.log(res, insertFn)
      // 从 res 中找到 url alt href ,然后插图图片
      insertFn(`/file${res.result.fileList[0].url}`)
    },
    // 跨域是否传递 cookie ,默认为 false
    withCredentials: true,

    // 超时时间,默认为 10 秒
    timeout: 5 * 1000, // 5 秒
    // 上传之前触发
    onBeforeUpload(file) {
      // file 选中的文件,格式如 { key: file }
      return file

      // 可以 return
      // 1. return file 或者 new 一个 file ,接下来将上传
      // 2. return false ,不上传这个 file
    },
    // 上传进度的回调函数
    onProgress(progress) {
      // progress 是 0-100 的数字
      console.log('progress', progress)
    },
    // 单个文件上传成功之后
    onSuccess(file, res) {
      console.log(`${file.name} 上传成功`, res)
    },
    // 单个文件上传失败
    onFailed(file, res) {
      console.log(`${file.name} 上传失败`, res)
    },
    // 上传错误,或者触发 timeout 超时
    onError(file, err, res) {
      console.log(`${file.name} 上传出错`, err, res)
    },
    customUpload(file, insertFn) {
      const data = new FormData()
      data.append('file', file) // file 即选中的文件 主要就是这个传的参数--查看接口需要带什么参数

      request
        .post(`api/files/upload`, {
          // file: file,
          data,
        })
        .then(function (res) {
          console.log('qz-用户自定义上传图片', res)
          // const url = "https:// /" + res.data.data.path; //拼接成可浏览的图片地址
          insertFn(res.msg.url) //插入图片
        })
        .catch(function (error) {
          console.log(error)
        })
    },
  }

主体

import '@wangeditor/editor/dist/css/style.css'
import { Editor, Toolbar } from '@wangeditor/editor-for-react'
   <Toolbar
            // editor为Editor组件生成的实例,关联Toolbar和Editor组件
            editor={editor}
            //默认配置,可以不提供
            defaultConfig={toolbarConfig}
            mode="default"
            style={{ borderBottom: '1px solid #ccc' }}
          />
          <Editor
            //默认配置,可以不提供
            defaultConfig={editorConfig}
            // value: 编辑器中显示的文本
            value={location.state?.id ? editArtical.content : html}
            // 2. onCreated: 编辑器创建完毕时的回调函数,会把编辑器实例存入editor状态
            onCreated={setEditor}
            // 3. onChange: 编辑器内容变化时的回调函数。
            // editor.getHtml() 获取编辑器的内容
            onChange={(editor) => setHtml(editor.getHtml())}
            mode="default"
            style={{ height: '500px', overflowY: 'hidden' }}
          />

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值