None of the demos that I've seen for Draft-js (by Facebook, built on React) show how to clear the input field after submit. For example, see this code pen linked to from awesome-draft-js where the value you submit remains in the input field after submit. There's also no function in the api that seems designed to do it. What I've done to achieve that is to create a new empty state on button submission like this
onSubmit(){
this.setState({
editorState: EditorState.createEmpty(),
})
}
However, since I create an empty state in the constructor when the editor is loaded like this
this.state = {
editorState: EditorState.createEmpty(),
};
I'm worried that I might not be doing it in the right way i.e. the previous state object might become a memory leak. Question: what is the intended way to reset the state in the above situation (i.e. button submit)
Try this
let editorState = this.state.editorState
let contentState = editorState.getCurrentContent()
const firstBlock = contentState.getFirstBlock()
const lastBlock = contentState.getLastBlock()
const allSelected = new SelectionState({
anchorKey: firstBlock.getKey(),
anchorOffset: 1,
focusKey: lastBlock.getKey(),
focusOffset: lastBlock.getLength(),
hasFocus: true
})
contentState = Modifier.removeRange(contentState, allSelected, 'backward')
editorState = EditorState.push(editorState, contentState, 'remove-range')
editorState = EditorState.forceSelection(contentState, contentState.getSelectionAfter())
this.setState({editorState})
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With