【发布时间】:2017-12-02 03:57:52
【问题描述】:
我正在尝试将图像插入 Draft.js 编辑器。
根据我的理解,我需要mergeData 更新实体和mergeBlockData 块。 (我不确定)
现在我正在尝试使用mergeBlockData 插入一个块。
mergeBlockData( contentState: ContentState, selectionState: SelectionState, blockData: Map<any, any> ): ContentState
请阅读代码中的注释。
import { Map } from 'immutable';
const selection = this.state.editorState.getSelection();
const contentState = this.state.editorState.getCurrentContent();
console.log(convertToRaw(contentState)); // for example, I have 3 blocks
const blockData = Map({ ov72: { // here how to generate a random valid key?
"key": "ov72",
"text": " ",
"type": "atomic",
"depth": 0,
"inlineStyleRanges": [],
"entityRanges": [{
"offset": 0,
"length": 1,
"key": 1
}],
"data": {}
}});
const newContentState = Modifier.mergeBlockData(contentState, selection, blockData);
console.log(convertToRaw(newContentState)); // here is wrong, still 3 blocks. Also original blocks have no change
const newEditorState = EditorState.push(this.state.editorState, newContentState);
【问题讨论】:
-
你在合并blockData 为什么块的大小会增加?
-
@NanduKalidindi 假设
mergeBlockData既不是替换也不是添加,它的作用是什么?我应该使用哪个正确的 API? -
我正在做一个 sn-p。但我想如果你想添加新块,你应该使用
ContentBlock。 -
@NanduKalidindi 你介意添加一个演示如何使用
ContentBlock在答案中添加新块吗?谢谢
标签: javascript reactjs draftjs