TinyMCE с событием ReactJS — onChange запускается только один раз

#javascript #reactjs #tinymce

#javascript #reactjs #tinymce

Вопрос:

Я использую TinyMCE в своем приложении reactjs. Событие onChange будет запущено один раз, правильно отражая входные данные в предупреждении. Тогда я ничего не получаю.

Вот соответствующий код:

 <Editor init={{
    statusbar: false,
    menubar: false,
    }}
    onChange={this.SetText}
 />
  

Метод onChange:

 SetText(e) {
    alert(e.target.getContent());
}
  

Ответ №1:

На самом деле событие, которое вы используете, неверно. Для плагина ReactJS у них есть onEditorChange. Вы можете использовать его следующим образом

 <Editor
  apiKey="MyAPIKey"
  initialValue=""
  init={{
    height: 500,
    menubar: false,
    plugins: [
      'advlist autolink lists link image charmap print preview anchor',
      'searchreplace visualblocks code fullscreen',
      'insertdatetime media table paste code help wordcount'
    ],
    toolbar:
      'undo redo | formatselect | bold italic backcolor | 
      alignleft aligncenter alignright alignjustify | 
      bullist numlist outdent indent | removeformat | help'
  }}
  onEditorChange={this.onChange}
/>
  

а затем вы можете получить доступ к содержимому редактора, используя

   onChange = (content) => {
    console.log(content);
  }
  

e.target не требуется

Комментарии:

1. В итоге я выбрал другой редактор, но только сейчас понял, что вы дали правильный ответ. Спасибо

Ответ №2:

Может быть, одно из этих событий проходит лучше, чем onChange?

  • Нажатие клавиши — срабатывает при нажатии клавиши в редакторе.
  • Нажатие клавиши — срабатывает при нажатии клавиши в редакторе.
  • KeyUp — срабатывает при освобождении ключа в редакторе.

https://www.tiny.cloud/docs/advanced/events/

Комментарии:

1. Ну, я думаю, я должен придерживаться собственных событий reactjs при изменении состояния, не так ли? В любом случае я могу поиграть с ними, потому что сейчас я в растерянности.

2. Я думаю, что вы можете изменить состояние с помощью событий TinyMCE. Но вы должны связать свою функцию в конструкторе (или использовать функцию массива), чтобы получить контекст компонента в методе события.

3. Да. Что ж, я попробую немного. Если это окажется жизнеспособным, и никто не сможет ответить, почему onChange запускается только один раз, я проверю вас на решение. Спасибо