Потеря выбора после мутации
Я делаю некоторые хитрые мутации состояния на editorState и теряю выбор.
Мне нужно получить currentText (), преобразовать в HTML с некоторой магической библиотекой и преобразовать его обратно в editorState. Это прекрасно работает, это просто выбор, который ломается так сильно.
Прямо сейчас я пытаюсь получить выбор с первого начала, а затем сделатьforceSelection
, но завершается с ошибкой, связанной сselection.hasFocus()
(это, кажется, не совсем связано ...).
Я предполагаю, что мне нужно рассчитать «новый» выбор на основе якорей и смещений, но не совсем уверен, есть идеи для этого?
Прямо сейчас мой код выглядит так:
// onChangeHandler:
const currentContentState = editorState.getCurrentContent()
const selectionState = editorState.getSelection()
const plainHtml = magicOperation(currentContentState.getPlainText())
const currentContentBlocks = convertFromHTML(plainHtml)
const contentState = ContentState.createFromBlockArray(currentContentBlocks)
const newEditorState = EditorState.createWithContent(contentState)
this.setState({
editorState: EditorState.forceSelection(
newEditorState,
selectionState
)
})
Это хак, я знаю, что я просто играю с DraftJS. Если я смогу добиться этого, в случае, если я сделаю так, чтобы я работал гладко, я бы определенно использовал Decorator для добавления HTML-кода в editorState.
Спасибо за ваше время!