从contentState中删除/清除所有实体

时间:2018-03-10 14:27:37

标签: entity draftjs

我试图从contentState中删除所有实体。

这样做的首选方式是什么?

1 个答案:

答案 0 :(得分:1)

不确定规范方式是什么,但我已经能够使用Modifier.applyEntity()https://draftjs.org/docs/api-reference-modifier.html#applyentity来实现。

您基本上需要遍历所有块,并在每个块的整个文本范围内使用该方法。所以像这样:

import {Modifier, SelectionState} from 'draft-js';
function clearEntityRanges(contentState){
  contentState.getBlockMap().forEach(block => {
    const blockKey = block.getKey();
    const blockText = block.getText();
    // You need to create a selection for entire length of text in the block
    const selection = SelectionState.createEmpty(blockKey);
    const updatedSelection = selection.merge({
      //anchorOffset is the start of the block
      anchorOffset: 0,
      // focustOffset is the end
      focusOffset: blockText.length
    })
    Modifier.applyEntity(contentState, updatedSelection, null);
  });
  return contentState
}