【发布时间】:2021-01-15 08:51:57
【问题描述】:
draft js 中的 onchange 方法在编辑和选择更改发生时由编辑器执行。但我只想在用户正在写作或内容发生变化而不是焦点或选择时调用触发器 onchange。有什么方法可以比较以前和当前的编辑器状态吗?
【问题讨论】:
标签: reactjs rich-text-editor draftjs
draft js 中的 onchange 方法在编辑和选择更改发生时由编辑器执行。但我只想在用户正在写作或内容发生变化而不是焦点或选择时调用触发器 onchange。有什么方法可以比较以前和当前的编辑器状态吗?
【问题讨论】:
标签: reactjs rich-text-editor draftjs
您不能完全这样做,因为 Draft-js 将鼠标的选择状态保持在编辑器状态中,必须触发 onChange,并且您必须更新编辑器状态,但是您检查旧的和新的编辑器状态纯文本并确定是否添加或删除了某些字符
const [editorState,setEditorState]= useState(EditorState.createEmpty());
function onChange(newEditorState: EditorState) {
const currentPlainText = editorState.getCurrentContent().getPlainText();
const newPlainText = newEditorState.getCurrentContent().getPlainText();
setEditorState(newEditorState);
if (currentPlainText.trim() !== newPlainText.trim()) {
/**
* do what you want knowing that you have different content in the editor
*/
}
}
【讨论】: