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 を使用して、editorState 内に HTML を追加します。
御時間ありがとうございます!