Как наиболее правильно реализовать обновление состояния компонента в 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
        }
      })
  • Вопрос задан
  • 3598 просмотров
Пригласить эксперта
Ответы на вопрос 1
styv
@styv
Возможно поможет shouldComponentUpdate, если возвращать false, то компонент не будет перерисовываться, но состояние будет обновляться.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы