JS 草案未注册 IME 输入

问题描述

在我的应用程序上工作时,我注意到在进行非韩语输入(空格、箭头键、返回、单击鼠标)之前不会注册韩语输入。我在 componentDidUpdate 中使用一个简单的 console.log 对此进行了测试,该日志在非韩语输入之前返回 false。

componentDidUpdate() {
const test = this.props.editorState.getCurrentContent();
console.log(test.hasText());
}

我的应用程序的一项功能要求当用户按下“返回”时,草稿会检测当前块中是否有文本以使其正常工作。目前它是 handleReturn 中的一个简单的 if 语句:

const block = editorState.getCurrentContent();
if(!block.hasText()) { 
    do something 
} else { do something else }

为了让草稿认识到已经进行了输入,到目前为止我已经尝试过:

  1. 用户按下“返回”后立即以编程方式模拟按键(如右箭头键)以注册韩语输入。但是,chrome 不允许用户发起事件,因为它不受信任。
  2. 通过在 handleReturn 顶部调用 handleKeyCommand 来启动其他命令(例如撤消和重做,调用 setState 等),但它们都不起作用,因为它只是否定了韩语输入,因为它没有以任何一种方式注册
  3. 我查看了 DraftEditorCompositionHandler 并对 IME(合成模式)进行了研究,看看是否有办法强制草稿解析合成,或强制 compositionend,但老实说,这超出了我的知识范围,经验或技能水平(总的来说,我对 React 还很陌生)

我做了一些研究,我知道 Draft 与其他语言也有问题,这与 IME 输入有关。

我已经被问题困扰了好几天,我很想就如何克服这个问题提出一些建议。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)