Как перевести состояние содержимого в текущее состояние редактора? мне кажется, метод editorState.push не работает? - PullRequest
1 голос
/ 05 июля 2019

есть некоторый простой текстовый контент, который нужно вставить, чтобы существовать 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 станет новой вещью, такой как create из text. Здесь что-то не так? или есть другие способы решить проблему?

1 Ответ

0 голосов
/ 08 июля 2019

Я устал сложным путем, но решил эту проблему. код здесь:

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. преобразовать состояние содержимого, текст, в массив блоков; 2. объединить два блока вместе; 3. создать новое состояние содержимого и состояние редактора с объединенным массивом;

...