2016-06-08 6 views
3

Неужели кому-нибудь удаётся адаптировать Draft.js для реагента? Там очень тяжелые проблемы с редактированием, если Draft.js импортируется сразу через reagent/adapt-react-class. Курсор прыгает, исчезая символы, когда вы печатаете, onChange звонки с неправильным EditorState, вы называете это.Использование Draft.js с реагентом

Люди сообщают о проблемах, подобных этому в clojurians/reagent Slack channel, но, похоже, до сих пор нет решения.

Любая помощь была бы принята с благодарностью.

ответ

2

Хорошо, спасибо tonsky, я получил ответ. Reagent/Rum используют отсроченный рендеринг с requestAnimationFrame, но Draft.Editor следует повторно отобразить сразу же после установки editorState.

Все, что нам нужно, это позвонить forceUpdate для редактора родительского компонента, когда редактор onChange вызывается:

:editorState @editor-state-atom 
:onChange (fn [new-state] 
       (reset! editor-state-atom new-state) 
       (.forceUpdate @wrapper-state)) 

Пример код для реактива, раствор для Рома идентичен

0

Просто идея (больше комментариев, но я не могу предоставить комментарии), потому что - если я правильно помню -: контент-редактируемый атрибут обрабатывается особым образом в реагенте:

Поскольку проблемы возникают, когда редактор Draftjs вызывается из Reagent, не поможет ли он преобразовать компонент Reagent в React-компонент (используя компонент реагента/реактивации), а затем использовать этот «повторно обработанный» компонент как реагирующего компонента в реагенте, используя реагент/элемент-образец? Я бы предположил, что Реагент тогда воздерживается от вмешательства в редактор Draftjs.

+0

Извините за поздний ответ. Нет, это не работает, onChange все еще возвращает испорченное состояние. Мы собираемся попробовать tonky/rum вместо реагента, может быть, это поможет – ai212983