首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >js草案。将EditorContent持久化到数据库

js草案。将EditorContent持久化到数据库
EN

Stack Overflow用户
提问于 2016-04-08 04:43:24
回答 6查看 24.7K关注 0票数 35

我试图将draft-jsEditorContent保存到数据库中,然后再读取和重新创建EditorContent对象,但是EditorContent.getPlainText()删除了丰富的文本内容,我不知道其他方法。

如何正确持久化EditorContent

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-04-08 04:55:55

顾名思义,getPlainText()方法只返回纯文本,没有任何丰富的格式设置。您应该使用convertToRaw()和convertFromRaw()函数来序列化和反序列化编辑器的内容。

如果有必要,可以以这种方式导入它们:(假设您使用的是ES6)

代码语言:javascript
运行
AI代码解释
复制
import {convertFromRaw, convertToRaw} from 'draft-js';

如果需要导出HTML,请参阅https://medium.com/@rajaraodv/how-draft-js-represents-rich-text-data-eeabb5f25cf2#9260 (但不确定是否可以从HTML导入内容)

票数 51
EN

Stack Overflow用户

发布于 2017-03-13 20:11:14

我发现在读取数据库并将其保存到数据库时,必须使用stringifyparse来实现RawContentState对象。

代码语言:javascript
运行
AI代码解释
复制
import { convertFromRaw, convertToRaw } from 'draft-js';

// the raw state, stringified
const rawDraftContentState = JSON.stringify( convertToRaw(this.state.editorState.getCurrentContent()) );
// convert the raw state back to a useable ContentState object
const contentState = convertFromRaw( JSON.parse( rawDraftContentState) );
票数 18
EN

Stack Overflow用户

发布于 2017-10-25 04:32:23

这里有很多有用的答案,所以我想添加这个小提琴演示。它展示了它是如何运作的。为了保存和检索编辑器的内容,这里使用了local storage。但是对于数据库来说,基本原理是一样的。

在这个演示中,您可以看到简单的编辑器组件,当您单击SAVE RAW CONTENT TO LOCAL STORAGE时,我们将当前编辑器内容作为字符串保存到本地存储中。我们使用convertToRawJSON.stringify来实现它:

代码语言:javascript
运行
AI代码解释
复制
 saveRaw = () => {
  var contentRaw = convertToRaw(this.state.editorState.getCurrentContent());

  localStorage.setItem('draftRaw', JSON.stringify(contentRaw));
}

如果在此之后重新加载页面,则将使用保存的内容和样式初始化编辑器。在constructor中,我们读取适当的本地存储属性,并使用JSON.parseconvertFromRawcreateWithContent方法使用先前存储的内容初始化编辑器。

代码语言:javascript
运行
AI代码解释
复制
constructor(props) {
  super(props);

  let initialEditorState = null;
  const storeRaw = localStorage.getItem('draftRaw');

  if (storeRaw) {
    const rawContentFromStore = convertFromRaw(JSON.parse(storeRaw));
    initialEditorState = EditorState.createWithContent(rawContentFromStore);
  } else {
    initialEditorState = EditorState.createEmpty();
  }

  this.state = {
    editorState: initialEditorState
  };
}
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36499858

复制
相关文章

相似问题

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