2017-04-13 9 views
0

spaceバーを入力すると、単語を2つの単語に分割しようとしています。テキスト内のすべての単語は実体なので、単語を2つに分割すると、テキストを更新して新しいエンティティを作成する必要があります。すぐに2つの操作でeditorStateを更新します

両方のアップデートにModifierモジュールを使用しています。

const editorStateAfterText = 
    EditorState.push(
    editorState, 
    Modifier.insertText(
     contentState, 
     selectionState, 
     ' ', 
    ), 
    command, 
); 
const editorStateAfterEntity = 
    EditorState.push(
    editorStateAfterText, 
    Modifier.applyEntity(
     contentState, 
     newSelectionState, 
     newEntityKey 
    ), 
    command, 
); 
this.setState({editorState: editorStateAfterEntity}) 

エディタの状態を2つの操作で同時に更新しようとしています。もう一方が存在しない場合、両方とも機能します。 2つが存在する場合、最後のもののみが更新されます。

テキストを更新(単語を分割)し、新しいエンティティをentityMapに追加する方法はありますか?

答えて

1

ドキュメントhttps://draftjs.org/docs/api-reference-editor-state.html#pushで定義されているように、push 3つのparamsを求めている:editorStatecontentStatecommand

私はeditorStateAfterTextで更新editorStateパラメータを渡すOK editorStateAfterEntityでそれをやっていたが、私は更新されcontentStateを無視しました。だからここ

は、それが最終的に働いていた方法です:

const contentAfterText = Modifier.insertText(
    contentState, 
    selectionState, 
    ' ', 
); 
    const editorStateAfterText = EditorState.push(
    editorState, 
    contentAfterText, 
    command, 
); 
    const contentStateAfterTextAndEntity = Modifier.applyEntity(
    contentAfterText, 
    newSelectionState, 
    newEntityKey 
); 
    const editorStateAfterTextAndEntity = EditorState.push(
    editorStateAfterText, 
    contentStateAfterTextAndEntity, 
    command, 
); 
    this.setState({editorState: editorStateAfterTextAndEntity}); 
関連する問題