gpt4 book ai didi

reactjs - 突变后失去选择

转载 作者:行者123 更新时间:2023-12-05 04:13:01 24 4
gpt4 key购买 nike

我在 editorState 上做了一些棘手的状态突变,我失去了选择。

我需要获取 currentText(),使用一些神奇的库将其转换为 HTML,然后将其转换回 editorState。这很好用,只是选择太难了。

现在,我试图在第一个开始时获得选择,然后执行 forceSelection,但由于一些与 selection.hasFocus() 相关的错误而失败(这似乎并没有真正相关...)。

我猜我需要根据 anchor 和偏移量计算"new"选择,但不确定,有什么想法可以做到这一点吗?

现在我的代码是这样的:

// 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
)
})

是 hack,我知道我只是在玩 DraftJS 如果我能做到这一点,在我让它顺利工作的情况下,我肯定会使用装饰器在 editorState 中添加 HTML。

感谢您的宝贵时间!

最佳答案

selectionState包含 block 键 (anchorKey&focusKey)。键变了,因为你替换了整个 block 。您需要做的是从偏移中找到键并将其设置为新的 selectionState,然后再将其应用到新的 editorState。

我很感兴趣,为什么您需要将纯文本转换为 html 并返回。

关于reactjs - 突变后失去选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38749474/

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