2016-08-19 4 views
9

Есть ли документация, в которой объясняется, как сохранить разрывы абзаца, когда содержимое вставляется в draft.js? Другое формирование выглядит разумным, но все блоки абзаца сворачиваются в один блок абзаца при вставке.draft.js: как сохранить абзацы при вставке содержимого?

+0

попробовать https://github.com/sstur/draft-js-import- html, которые помогут вам импортировать html. –

+0

Нет, draft-js-import-html не поможет в этом случае. (Я использую draft-js-import-html уже для преобразования HTML в editorState для загрузки контента - отлично работает). Но это не помогает, когда _pasting_ контент из другого приложения: _все разделители абзацев выходят из него ._ – SteveB

+0

вставка строки html или обычного текста? –

ответ

3

К сожалению, публичной документации по обработке вставленного содержимого нет. Но так как проект-js открыт с открытым исходным кодом, чтение источников приходит на помощь.

Draft-JS 0.9.1 и ниже

Просто укажите p в качестве элемента для псевдонимом unstyled блока с использованием blockRenderMap:

import { Map } from 'immutable'; 
import Editor from 'draft-js'; 

const customRenderMap = Map({ 
    unstyled: { 
    element: 'div', 
    // will be used in convertFromHTMLtoContentBlocks 
    aliasedElements: ['p'], 
    }, 
}); 

<Editor 
    editorState={this.state.editorState} 
    blockRenderMap={customRenderMap} 
/> 

Объяснение:

При вставке содержимого в draft-js, editOnPaste Функция вызывается. Внутри этого проекта определяется, что содержимое, которое вы вставили, это html (да, когда вы копируете любой текст из текстовых процессоров, таких как MS Word, Google Docs или Apple Pages, это на самом деле html) и вызывает convertFromHTMLToContentBlocks().

convertFromHTMLToContentBlocks() в свою очередь uses blockRenderMap, чтобы определить, как разделить html на блоки.

Draft-JS 0.10.0

div является совмещенным с pby default в [email protected]

Смежные вопросы