首页 > 其他分享 >2023-04-11 使用react-draft-wysiwyg插件进行图片插入后编写文字时抛出错误:Unknown DraftEntity key: null.

2023-04-11 使用react-draft-wysiwyg插件进行图片插入后编写文字时抛出错误:Unknown DraftEntity key: null.

时间:2023-04-11 23:36:02浏览次数:59  
标签:11 react 插件 const wysiwyg draft key props 图片

前言:react+antd+react-draft-wysiwyg文本编辑业务场景,当我点击插入图片时,在该图片上一行或下一行进行文字输入会报如下错误:

报错:Unknown DraftEntity key: null.未知的DraftEntity key:null。

原因:当你插入图片时,新的图片img需要被包裹在一个块级元素内就不会报错(这看起来并不是原因)。

解决方案(注:该方案来自http://t.csdn.cn/gnk9W):

新建一个xxx.jsx,代码如下:

import React, { Component } from 'react';

export const myBlockRenderer = contentBlock => {
    const type = contentBlock.getType();

    // 图片类型转换为mediaComponent
    if (type === 'atomic') {
        return {
            component: Media,
            editable: false,
            props: {
                foo: 'bar',
            },
        };
    }
};

class Media extends Component {
    constructor(props) {
        super(props)
        this.state = {}
    }
    render() {
        const { block, contentState } = this.props;
        const data = contentState.getEntity(block.getEntityAt(0)).getData();
        const emptyHtml = ' ';
        return (
            <div>
                {emptyHtml}
                <img
                    src={data.src}
                    alt={data.alt || ''}
                    style={{ height: '100%', width: '100%' }}
                />
            </div>
        );
    }
}

这个文件是原作者(http://t.csdn.cn/gnk9W)自己写的,不过他的是ts版本,我把它改成了js版本,它的作用就是把富文本里面的图片重新包装一下再返回。

然后把这个文件引入你的文本编辑器中吧,如:

import { Editor } from 'react-draft-wysiwyg'

···
<Editor     customBlockRenderFunc={xxx} // 关键业务在这一行 xxx 是你要引入的那个xxx.jsx文件     toolbar={{               previewImage: true,         defaultSize: {             height: 'auto',             width: 'auto',         },         options: [             'inline',             'blockType',             'fontSize',             'fontFamily',             'list',             'textAlign',             'colorPicker',             'link',             'embedded',             'image',             'remove',             'history',         ],         fontFamily: {             options: [                 '宋体',                 '黑体',                 '楷体',                 '微软雅黑',                 'Arial',                 'Georgia',                 'Impact',                 'Tahoma',                 'Times New Roman',                 'Verdana',             ],         },     }} />


关于Editor有一些代码我就不放出来了,因为各自都有自己的业务。

这样就不会出现报错了。

 

标签:11,react,插件,const,wysiwyg,draft,key,props,图片
From: https://www.cnblogs.com/iuniko/p/17308263.html

相关文章

  • Semi-prime H-numbers UVA - 11105
     所有形如4n+1(n为非负整数)的数叫H数。定义1是唯一的单位H数,H素数是指本身不是1,且不能写成两个不是1的H数的乘积。H-半素数是指能写成两个H素数的乘积的H数(这两个数可以相同也可以不同)。 例如,25是H-半素数,但125不是。输入一个H数h(h≤1000001),输出1~h之间有多少个H-半素数。......
  • 2023-04-11 无向图的匹配问题
    无向图的匹配问题之所以把无向图的这个匹配问题放到最后讲是因为匹配问题借鉴了有向图中一些算法的思想1最大匹配和完美匹配二分图回顾二分图:把一个图中的所有顶点分成两部分,如果每条边的两端分别属于不同部分,则这个图是二分图。更多二分图内容参考第4章二分图相关最大......
  • 每日总结 4.11
    今天进行了虚拟售卖机的页面规划和数据更新。学习了页面视频的实现,为之后的广告做准备。实现了两个虚拟售卖机的购买:  <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%@pageimport="toolse.Tll"%><%@pageimpor......
  • 2023.4.11——团队任务日报
    认领的工作任务:工作任务预估时间1.角色管理—教师身份(6.5h)2.调用接口,调用摄像头实现人脸识别(4h) ......
  • 4月11日leetcode练习
    设计一个支持push,pop,top操作,并能在常数时间内检索到最小元素的栈。实现MinStack类:MinStack()初始化堆栈对象。voidpush(intval)将元素val推入堆栈。voidpop()删除堆栈顶部的元素。inttop()获取堆栈顶部的元素。intgetMin()获取堆栈中的最小元素。 来源:力扣(Le......
  • 4.11号今日总结
    今日我们团队录制了服创团队第一次团队会议的视频,时常为39分钟.在这次会议中我们主要讨论了已经完成的一些功能以及后期需要实现的一些功能,我们四人团队积极发表了自己的想法,认领了各自的任务以及定制了每天需要实现的进度目标.......
  • 11-键盘录入笔记
    一,键盘录入涉及到的方法如下:​ next()、nextLine()、nextInt()、nextDouble()。1)next()、nextLine():可以接受任意数据,但是都会返回一个字符串。比如:键盘录入abc,那么会把abc看做字符串返回。​ 键盘录入123,那么会把123看做字符串返回。代码示例:Scannersc=newScanner(System.in);......
  • C++/ 4/11 学习内容
    空指针调用结构体中的成员函数const修饰成员函数,不能更改函数成员的值友元,让朋友可以访问本类的私有变量, *全局函数做友元*类做友元*成员函数做友元运算符重载:注意格式就ok还有<<这个输出时候的重载, 各种个样的函数重载,主要是为了方便,在主函数里面的实现......
  • Javaweb-登录界面-filter配合案例-2023-04-11
    1、新建login.jsp登录界面响应的路径<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>Login</title></head><body><h1>登录界面</h1><hr><form......
  • 「Solution Set」4.11 小记
    P3642[APIO2016]烟火表演我不太会证明凸性。像这道题就是列出DP方程,\(f_{u,x}\)表示以\(u\)为根的子树还有\(x\)分钟就全爆炸的最小代价。然后赌它是个凸函数((因为它有\(sum\),就是两个下凸函数相加,还是下凸的。然后求前缀的最小值再加一个函数一类的,所以考虑之后这......