Draft.JS: правильный способ обнаружить изменение контента

Событие onChange есть, но оно срабатывает также при перемещении каретки или нажатии кнопки навигации (стрелки и т. Д.).

Я хочу определить, был ли изменен контент. По сути, мне нужно обнаружить это только один раз, когда происходят самые первые изменения. Тут может работать тупой способ "сравнивать контент", но это против паттерна, потому что эта задача слишком дорогая.

1 ответ

Решение

Поскольку в Draft используется неизменяемая структура данных, необязательно, чтобы этот ресурс был слишком сложным - сравнений должно быть достаточно:

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

  if (currentContent !== newContent) {
    // Content has changed
  }
}
Другие вопросы по тегам