2017-09-24 10 views
1

公式ドキュメントから私は2つの方法について知っています:そのキーでエンティティを取得し、最後に作成したエンティティを取得します。私の場合、現在のContentStateからすべてのエンティティにアクセスするメソッドも必要です。 これを実行する方法はありますか?そうでない場合は、すべてのエンティティキーを提供できるものはありますか? おかげドラフト.js。 ContentStateからすべてのエンティティデータを取得する方法

+0

作成したエンティティのセットを保存しないのはなぜですか? –

+0

URのお返事ありがとうございます。私もこれを試してみます。問題は、ユーザーがエンティティで範囲を削除したときに、このセットからエンティティを自動的に削除するように設定することです –

答えて

3

const getEntities = (editorState, entityType = null) => { 
 
    const content = editorState.getCurrentContent(); 
 
    const entities = []; 
 
    content.getBlocksAsArray().forEach((block) => { 
 
     let selectedEntity = null; 
 
     block.findEntityRanges(
 
      (character) => { 
 
       if (character.getEntity() !== null) { 
 
        const entity = content.getEntity(character.getEntity()); 
 
        if (!entityType || (entityType && entity.getType() === entityType)) { 
 
         selectedEntity = { 
 
          entityKey: character.getEntity(), 
 
          blockKey: block.getKey(), 
 
          entity: content.getEntity(character.getEntity()), 
 
         }; 
 
         return true; 
 
        } 
 
       } 
 
       return false; 
 
      }, 
 
      (start, end) => { 
 
       entities.push({...selectedEntity, start, end}); 
 
      }); 
 
    }); 
 
    return entities; 
 
};

0

すべてのエンティティオブジェクトとキーを取得するための可能なアプローチ質問に要求されるように

converToRaw全体の状態のJSオブジェクトを提供します。 entityMapにアクセスして、エンティティの配列を返すことができます。

const raw = convertToRaw(this.state.editorState.getCurrentContent()) 
console.log(raw.entityMap) 

convertToRawメソッド呼び出しによるパフォーマンスの影響をチェックする必要があります。

キーは、私は簡潔にするためにはnullチェックを含めていない

const keys = Object.keys(raw.entityMap) 

...としてアクセスすることができます。

関連する問題