Draft.JS:检测内容更改的正确方法

stk*_*flw 5 reactjs draftjs

onChange事件,但是当carret移动或导航(箭头等)按钮被按下时它也会发生.

我想检测内容是否已更改.基本上我只需要在第一次发生变化时检测到这一次.愚蠢的方式"比较内容"可能在这里工作,但这是一种反模式,因为这项任务资源太昂贵了.

tob*_*sen 9

由于Draft使用了不可变的数据结构,因此它不必是那么重的资源 - 比较引用应该足够了:

onChange(newEditorState) {
  const currentContent = this.state.editorState.getCurrentContent()
  const newContent = newEditorState.getCurrentContent()

  if (currentContent !== newContent) {
    // Content has changed
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您只想检测实际内容状态(块/实体)而不是选择的更改,则这不起作用。 (2认同)