首页 > 解决方案 > 如何在没有选择的情况下在特定的空白空间中添加 Slate 节点?

问题描述

假设我必须通过单击编辑器外部的工具栏向 Slatejs 文档添加一些自定义元素。它触发Transform.insertNodes但不是添加元素代替光标(单击工具栏时消失并丢失选择),而是将我的元素放在文档的末尾。使用Locationslike PointorRange将无济于事,因为我不知道光标的当前位置,而且我没有看到任何会跟随光标位置的助手。

那么,如何将我的元素放在光标的位置?

标签: javascriptreactjsslateslatejs

解决方案


这听起来像是editor.selection失去焦点时变为 null 的问题,这是一个已知问题

有一些解决方法。一种是自己跟踪选择:

<Slate
  ...
  onBlur={() => {
    editor.lastSelection = editor.selection;
  }}
/>
...
Transforms.select(editor, editor.lastSelection)
Transforms.insertNodes(...,) // this will no work

另一种方法是猴子补丁Transforms.deselect 以不允许丢失选择。


推荐阅读