Как запускать onchange только при изменении содержимого в редакторе черновика js?

#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. это сработает, только если изменится само содержимое, но не если изменится встроенный стиль