Как наиболее правильно реализовать обновление состояния компонента в React.js для contenteditable?

Метод setState вызывает следом за собой метод render, что не критично, если поведение contenteditable-элемента соответствует поведению обыкновенного form-input, но критично, если в innerHTML находятся сразу несколько dom-элементов – сбрасывается положение курсора. Задача состоит в следующем:

1) ввести любой html-код в элемент
2) получить значение innerHTML
3) применить функцию очистки(sanitize) к значению innerHTML
4) очищенный контент поместить в state.content

Как это реализовать?

Пример:
sanitize = (content) ->
  cleanContent = ''
  # ...
  return cleanContent

ContentEditableView = React.createClass
  displayName: 'ContentEditableView'

  getInitialState: -> content: ''

  handleChange: (event) ->

    return

  render: ->
    {div} = React.DOM
    (div {  
        contentEditable: yes
        onInput:         @handleChange
        dangerouslySetInnerHTML: {
          __html: @state.content
        }
      })
  • Вопрос задан
  • 3591 просмотр
Пригласить эксперта
Ответы на вопрос 1
styv
@styv
Возможно поможет shouldComponentUpdate, если возвращать false, то компонент не будет перерисовываться, но состояние будет обновляться.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы