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

Remove / clear all entities from a contentState

我正在尝试从 contentState 中删除所有实体。

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

不确定规范方法是什么,但我已经能够通过使用 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
}