Draft-js: заменить ContentBlock на фрагмент - PullRequest
0 голосов
/ 11 мая 2018

У меня есть ссылка на некоторый ContentBlock (который не выбран). Как я могу заменить его некоторым фрагментом?

У меня есть фрагмент

const fragment = DraftPasteProcessor.processHTML(html);

И ссылка на блок

const currentBlock = content.getBlockForKey(myKey);

Как я могу заменить этот блок фрагментом? Этот блок не выбран. Я не хочу его заменять и устанавливать курсор в конце фрагмента.

Я пытался использовать Modifier.replaceWithFragment, но этот метод работает только с SelectedState.

1 Ответ

0 голосов
/ 11 мая 2018

Самый простой способ сделать это - переместить выделение, а затем удалить фрагмент:

const fragment = DraftPasteProcessor.processHTML(html);
const myKey = 'some id'; // same as your code
const currentBlock = content.getBlockForKey(myKey);
const anchorOffset = currentBlock.getLength();
const selection = SelectionState.createEmpty(myKey).set('anchorOffset', anchorOffset);
Modifier.replaceWithFragment(content, selection, fragment);

Это довольно распространенный тип действий с DraftJS. На DraftJS docs вы заметите, что он говорит вам использовать функции ImmutableJS (в данном случае set) для изменения вашего выбора по мере необходимости.

...