SlateJS:slate-core Editor 不更新模拟的 onKeyDown 事件的值



我正在尝试模拟slate-coreEditor上的onKeyDown事件 - 而不是slate-react- 以测试我正在开发的一些插件。但是,Editor没有更新其Value

我已经广泛地浏览了SlateJS0.47.x文档,据我所知,Editor组件应该开箱即用地响应onKeyDown事件。

这是一个重现我的问题的小代码沙箱示例。

^ 请注意,尽管我试图在文件core-editor-is-not-responding-to-on-key-down-events.js中模拟许多onKeyDown事件,但Editor的值永远不会更新;它仍然是一个空白文档。

我担心行为中的这种差异,因为似乎我需要重写插入文本的功能,因为当我相信已经存在的所述功能时,它会被键入出来。

任何帮助将不胜感激!

所以事实证明这是Slate-Core中的一个错误,正如@devinm提到的。如果没有Slate-React,它就无法对onKeyDown做出正确的反应。


我不知道如何将其捆绑起来供其他人使用,而且这个问题会影响许多Slate版本,所以我认为最好的办法是解释无论如何都需要做什么。

请注意,您的环境需要支持 ES6 导入。

  1. 转到您正在使用的受影响版本(0.44.x 到 0.47.x)的 Slate 代码库,并找到 slate-react/plugins/DOMPlugin 文件
  2. 将目录的内容复制到项目中名为slate-react-dom-plugin的新文件夹中
  3. 将这些目录复制到slate-react-dom-plugin/index.js文件旁边的路径中 -utilsconstants(再次,来自slate-react)
  4. 更新每个模块的导入路径以匹配其新结构(请注意,您实际上并不需要 utils 文件夹中的每个文件,只需要 DOMPlugin 引用的文件,但复制整个文件夹更容易)
  5. 在测试中使用import DOMPlugin from './slate-react-dom-plugin'
  6. 创建测试编辑器时,请使用以下插件配置:
new Editor({
value: value
plugins: [DOMPlugin({ plugins: [...ANY_OTHER_PLUGINS] })], // Wrap any plugins you use with the DOMPlugin
});
  1. 运行测试,它现在应该按预期触发onKeyDown事件

如果您有任何问题,请告诉我!

最新更新