我今天早些时候在 github 上发布了对您问题的答案,但我也会在此处添加它以供将来参考:
你是对的,每次editorState
更改时都会调用 onChange 。并且由于同时editorState
包含 theselectionState
和contentState
,所以当有内容编辑时以及选择/焦点发生变化时,它都会发生变化。
如果您想知道触发该onChange
方法的更改是否在contentState
或 中selectionState
,您可以将它们与它们的旧值进行比较:
function onChange(newState) {
const currentContentState = this.state.editorState.getCurrentContent()
const newContentState = newState.getCurrentContent()
if (currentContentState !== newContentState) {
// There was a change in the content
} else {
// The change was triggered by a change in focus/selection
}
}
现在,如果您知道更改发生在 中,您可以通过调用newState.getLastChangeType()contentState
获取更多信息。它应该返回任何这些值(除非您或您添加的某些插件创建了新的更改类型)。