10

There is onChange event, but it fires also when carret moves or navigation (arrows etc) button being pushed.

I want to detect if content was changed. Basically i need to detect this only once when the very first change occur. The dumb way "compare content" may work here, but this is an anti-pattern because this task is too resources-expensive.

stkvtflw
  • 12,092
  • 26
  • 78
  • 155

1 Answers1

20

Since Draft uses an immutable data structure, it doesn't have to be that resource heavy – comparing references should be enough:

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

  if (currentContent !== newContent) {
    // Content has changed
  }
}
tobiasandersen
  • 8,480
  • 3
  • 28
  • 39