javascript - 如何在没有选择的情况下在特定的空白空间中添加 Slate 节点?
问题描述
假设我必须通过单击编辑器外部的工具栏向 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 以不允许丢失选择。
推荐阅读
- php - Zend 框架 3 和 rackspace authenticate() 不工作
- java - Java 中的 MaxRAMPercentage 支持,它仅用于容器还是我们也可以在容器外使用它
- python-3.x - 无法使用 gunicorn 提供烧瓶应用程序
- mysql - 如何防止“表 X 被 READ 锁锁定且无法更新”?
- asp.net - 当我尝试在 Auto-desk Forge 中查看模型时出现身份验证错误
- java - 更新新项目时如何自动向下滚动ListView控件-android studio
- list - 在球拍中,我如何返回一个列表,其中包含两个不同字典中出现的所有键
- node.js - 如何从 aws cognito 中的 authenticateUser 函数调用 sendMFACode 函数
- c# - 如何将数据向下添加到 IEnumerable 类型?
- cordova - 从 IONIC Native InAppBrowser 隐藏位置工具栏