彼ら!助けてください。
私が欲しいもの:Enter
ユーザーが新しい行から開始するときに、ユーザーが URLを入力し、 URL を含むブロックを削除して、それを custom に置き換えたいと押しますEntity
。ドキュメントのメディアの例によく似ていますが、Add image
ボタンはありません。
私が試したこと:(ただの大まかなドラフト)
var mediaBlockRenderer = function(block) {
if (block.getType() === 'atomic') {
return {
component: TestComponent,
editable: false
};
}
return null;
};
var TestComponent = function() {
return <div className="test-component">TEST COMPONENT</div>;
};
onChange: function(editorState) {
var currentKey = editorState.getSelection().getStartKey();
var content = editorState.getCurrentContent();
var selection = content.getSelectionBefore();
var beforeKey = content.getKeyBefore(currentKey);
var block = content.getBlockForKey(beforeKey);
if (block && block.getText() === 'test') {
console.log(block.getText());
var len = block.getCharacterList().size;
var newSelection = selection.merge({
anchorOffset: 0,
focusOffset: len
});
var newContent = Modifier.removeRange(content, newSelection, 'backward');
editorState = EditorState.push(editorState, newContent, 'insert');
var key = Entity.create('media', 'IMMUTABLE');
editorState = AtomicBlockUtils.insertAtomicBlock(
editorState,
key,
' '
);
//editorState = EditorState.forceSelection(editorState, newContent.getSelectionBefore());
}
this.setState({
editorState: editorState
})
}
それはほとんど私が望むことをしますが、挿入されたブロックはバックスペースを押しても削除できません.カーソルは右上隅にジャンプするだけです.
私の質問:ブロックを置き換える推奨される方法は何ですか? ブロックをどのように削除しますか? 挿入したブロックが削除されないのはなぜですか?
ありがとう!