簡體   English   中英

SlateJS:slate-core 編輯器不更新模擬 onKeyDown 事件的值

[英]SlateJS: slate-core Editor not updating value for simulated onKeyDown events

我正在嘗試從slate-core模擬Editor上的onKeyDown事件——而不是slate-react來測試我正在開發的一些插件。 但是, Editor不會更新其Value

我已經廣泛瀏覽了 SlateJS 0.47.x文檔,並從我可以告訴Editor組件應該立即響應onKeyDown事件。

這是一個重現我的問題的小代碼和框示例

^ 請注意,盡管我試圖模擬許多onKeyDown事件——在文件core-editor-is-not-responding-to-on-key-down-events.js —— 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事件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM