#reactjs #rich-text-editor #draftjs
#reactjs #форматированный текстовый редактор #draftjs
Вопрос:
Метод onchange в draft js выполняется редактором при внесении изменений и изменении выбора. Но я хочу вызывать триггер onchange только тогда, когда пользователь пишет или изменяется содержимое, а не при фокусировке или выборе. Есть ли какой-либо способ сравнить предыдущее и текущее состояние редактора?
Ответ №1:
Вы не можете сделать именно это, потому что 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
*/
}
}
Комментарии:
1. это сработает, только если изменится само содержимое, но не если изменится встроенный стиль