Метод
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
}
})