假设我必须通过单击编辑器外部的工具栏向 Slatejs 文档添加一些自定义元素。它触发Transform.insertNodes
但不是添加元素代替光标(单击工具栏时消失并丢失选择),而是将我的元素放在文档的末尾。使用Locations
like Point
orRange
将无济于事,因为我不知道光标的当前位置,而且我没有看到任何会跟随光标位置的助手。
那么,如何将我的元素放在光标的位置?
假设我必须通过单击编辑器外部的工具栏向 Slatejs 文档添加一些自定义元素。它触发Transform.insertNodes
但不是添加元素代替光标(单击工具栏时消失并丢失选择),而是将我的元素放在文档的末尾。使用Locations
like Point
orRange
将无济于事,因为我不知道光标的当前位置,而且我没有看到任何会跟随光标位置的助手。
那么,如何将我的元素放在光标的位置?
这听起来像是editor.selection
失去焦点时变为 null 的问题,这是一个已知问题。
有一些解决方法。一种是自己跟踪选择:
<Slate
...
onBlur={() => {
editor.lastSelection = editor.selection;
}}
/>
...
Transforms.select(editor, editor.lastSelection)
Transforms.insertNodes(...,) // this will no work
另一种方法是猴子补丁Transforms.deselect 以不允许丢失选择。