2016-05-26 11 views
8

Keiner der Demos, die ich für Draft-js (von Facebook, auf React basierend) gesehen habe, zeigt, wie das Eingabefeld nach dem Senden gelöscht wird. Sehen Sie sich beispielsweise code pen linked to from awesome-draft-js an, wo der von Ihnen gesendete Wert nach dem Senden im Eingabefeld verbleibt. Es gibt auch keine function in the api, die dafür entworfen scheint. Was ich habe, das zu erreichen getan ist, einen neuen leeren Zustand auf die Schaltfläche Vorlage wie dieseSo löschen Sie das Eingabefeld in Draft-js

onSubmit(){ 
this.setState({ 
    editorState: EditorState.createEmpty(), 
}) 
} 

jedoch zu schaffen, da ich einen leeren Zustand in den Konstruktor zu erstellen, wenn der Editor wie diese

this.state = { 
    editorState: EditorState.createEmpty(), 
    }; 
geladen wird

Ich mache mir Sorgen, dass ich es nicht richtig mache, dh das vorherige Zustandsobjekt könnte ein Speicherleck werden. Frage: was ist der beabsichtigte Weg, um den Zustand in der oben genannten Situation (dh Schaltfläche senden) zurückzusetzen

+3

Ich habe ein Beispiel, was Sie nach, und es scheint in Ordnung zu arbeiten. Ich habe den draft-js-Editor mit einigen Standard-Inhalten auf mount gefüllt. Durch Klicken auf die Schaltfläche "Senden" wird der Status mithilfe der Funktion "EditorState.createEmpty()" geleert. Sieht gut aus. http://www.webpackbin.com/NkNbdZlXZ – ctrlplusb

Antwort

13

Es ist NICHT NICHT empfohlen, EditorState.createEmpty() zu verwenden, um den Status des Editors zu löschen - Sie sollten nur verwenden createEmpty bei der Initialisierung.

Der richtige Weg, Inhalt des Editors zurück:

import { EditorState, ContentState } from 'draft-js'; 

const editorState = EditorState.push(this.state.editorState, ContentState.createFromText('')); 
this.setState({ editorState }); 

@source: https://github.com/draft-js-plugins/draft-js-plugins/blob/master/FAQ.md

+0

Sie können auch den dritten Parameter übergeben. 'EditorState.push (editorState, ContentState.createFromText (''), 'remove-range')' – Searene