首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从react-draft-wysiwyg中给定的ContentState的JSON数据更新编辑器状态?

如何从react-draft-wysiwyg中给定的ContentState的JSON数据更新编辑器状态?
EN

Stack Overflow用户
提问于 2018-05-20 19:10:56
回答 3查看 2.4K关注 0票数 1

这是我的editor.js

我在const内容中有示例JSON数据。我想要做的是,当我最初打开编辑器时,它应该在变量content中呈现初始内容。但是我不知道如何更新editorState,因为它是不可变的。

代码语言:javascript
复制
import React, { Component } from 'react';
import { EditorState, convertToRaw, convertFromRaw, ContentState } from 'draft-js';
import { Editor } from 'react-draft-wysiwyg';


const content = {"blocks":[{"key":"5ngeh","text":"hi there !!!!!","type":"unstyled","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}};

这是我的BlogEdit组件:

代码语言:javascript
复制
class BlogEdit extends Component {
constructor(props) {
    super(props);
    const contentState = convertFromRaw(content);
    console.log(contentState);
    this.state = {
    editorState: EditorState.createEmpty(),       //I need to change this to actually render the content of content variable in editor
    contentState,
    }
    console.log(contentState);
}

此函数负责根据editorState更改内容中的JSON

代码语言:javascript
复制
onContentStateChange: Function = (contentState) => {
    this.setState({
    contentState,
    });
};

这是渲染部分。

代码语言:javascript
复制
render() {
    const { editorState } = this.state;
    const { contentState } = this.state;
    return (
    <div>
        <Editor
        editorState={editorState}
        wrapperClassName="demo-wrapper"
        editorClassName="demo-editor"
        onContentStateChange={this.onContentStateChange}
        />

    </div>
    );
}
}

export default BlogEdit;

那么我到底应该做什么呢?

EN

回答 3

Stack Overflow用户

发布于 2018-06-17 12:06:33

编辑器组件有一个属性名称initialContentState.你可以在这里传递contentstate。

票数 2
EN

Stack Overflow用户

发布于 2018-06-28 00:05:31

您可以使用内容创建而不是EditorState.createEmpty(),,

代码语言:javascript
复制
 let editorStatewithContent = EditorState.createWithContent(contentState);     
 //Then you set the state 
 this.state = {
   editorState:  editorStatewithContent      
}

你可能得通读一下这份文件,它把所有的事情都解释得很清楚。

票数 2
EN

Stack Overflow用户

发布于 2020-06-06 06:53:55

如果你正在使用redux,并且你的编辑器状态没有entityMap对象,它将抛出一个错误。

所以你可以这样做

代码语言:javascript
复制
const content = convertFromRaw({...contentState, entityMap: {}})

它还将解决您的invalid RawDraftContentState问题

无需设置任何initialContentState,无需设置该值即可实现

代码语言:javascript
复制
this.setState({
    editorState: EditorState.createWithContent(content)
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50434214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档