gpt4 book ai didi

draftjs - 如何将内容状态推送到当前编辑器状态? editorState.push 方法似乎对我不起作用?

转载 作者:行者123 更新时间:2023-12-05 05:10:12 26 4
gpt4 key购买 nike

有一些纯文本内容需要插入到存在的textEditor中,我尝试使用EditorState.push方法,我认为它适用于这种情况。我尝试这样的事情:

const { ContentState: { createFromText }, EditorState: { createWithContent, push }} = DraftJS;
export const pushTextToCurrentEditorState = (text, editorState) => {
const textContentState = createFromText(text);
const newEditorState = push(editorState, textContentState, 'insert-characters');
// debugger;
console.log(editorStateToJSON(editorState))
console.log(editorStateToJSON(newEditorState))
return JSON.parse(editorStateToJSON(newEditorState));
}

结果是 newEditorState 不是合并状态,而是替换一个,旧的 editorState 丢失,newEditorState 变成全新的东西,就像从 text 创建一样>。这里有什么错误的用法吗?或者有其他一些方法可以解决这个问题?

最佳答案

我厌倦了一种复杂的方式,但解决了这个问题。代码在这里:

export const pushTextToCurrentEditorState = (text, editorState) => {

const textContentState = createFromText(text);
const textContentBlocksArr = textContentState.getBlocksAsArray();
const currentBlocksArr = editorState.getCurrentContent().getBlocksAsArray();
const newBlocksArr = currentBlocksArr.concat(textContentBlocksArr);
const newContentState = createFromBlockArray(newBlocksArr);
const newEditorState = createWithContent(newContentState);

return JSON.parse(editorStateToJSON(newEditorState));
}

方式:1. 将内容状态、文本转换为 block 数组;2. 将两个 block 数组组合在一起;3. 使用组合数组创建新的内容状态和编辑器状态;

关于draftjs - 如何将内容状态推送到当前编辑器状态? editorState.push 方法似乎对我不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56901385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com