javascript - SlateJS:slate-core 编辑器不更新模拟 onKeyDown 事件的值
问题描述
我正在尝试模拟来自- 而不是-onKeyDown
的事件来测试我正在开发的一些插件。但是,它并没有对其进行任何更新。Editor
slate-core
slate-react
Editor
Value
我已经广泛浏览了 SlateJS0.47.x
文档,并且据我所知,Editor
组件应该响应onKeyDown
开箱即用的事件。
^ 请注意,尽管我试图模拟大量onKeyDown
事件——在文件中core-editor-is-not-responding-to-on-key-down-events.js
——Editor
但从不更新的值;它仍然是一个空白文档。
我担心这种行为差异,因为当我认为所述功能已经存在时,我似乎需要重写插入文本的功能,因为它被输入。
任何帮助将不胜感激!
解决方案
因此,正如@devinm 所提到的,它原来是 Slate-Core 中的一个错误。如果没有 Slate-React,它不会对onKeyDown
.
我不知道如何将它捆绑起来供其他人使用,而且这个问题也会影响许多 Slate 版本,所以我认为最好的办法是解释无论如何需要做什么。
请注意,您的环境需要支持 ES6 导入。
- 转到您正在使用的受影响版本的 Slate 代码库(0.44.x 到 0.47.x)并找到slate-react/plugins/DOMPlugin 文件
- 将目录的内容复制到项目中名为的新文件夹中
slate-react-dom-plugin
- 将这些目录复制到
slate-react-dom-plugin/index.js
文件旁边的路径中 -utils
并且constants
(同样,来自 slate-react) - 更新每个模块的导入路径以匹配它们的新结构(请注意,您实际上并不需要 utils 文件夹中的每个文件,只需要 DOMPlugin 引用的文件,但复制整个文件夹更容易)
- 在您的测试使用中
import DOMPlugin from './slate-react-dom-plugin'
- 创建测试编辑器时,请使用以下插件配置:
new Editor({
value: value
plugins: [DOMPlugin({ plugins: [...ANY_OTHER_PLUGINS] })], // Wrap any plugins you use with the DOMPlugin
});
- 运行您的测试,它现在应该
onKeyDown
会按预期触发事件
如果您有任何问题,请告诉我!
推荐阅读
- android - Delphi Android 长进程等待消息
- html - 电子邮件验证的模式属性在 html5 中不起作用
- mysql - mySQL 存储过程中的临时表
- .net - 是否可以将 .Net 核心 MVC 应用程序包装为 dll,添加对另一个控制台应用程序的引用并从控制台应用程序开始?
- http - 如何从http POST请求结果颤振在listview builder上显示数据
- typescript - Typescript 编译器永远不会出错:Type 'string | number' 不可分配给类型 'never'。类型“字符串”不可分配给类型“从不”
- python - 以分类值作为标签的热图
- unity3d - OneSignal SDK 想要在 Unity 中导入时删除所有资产
- vue.js - NuxtJS - 将所有错误的 url 重定向到 404 页面
- javascript - 如何使用 Angular 获取典型的 json 数据