Gewusst wie: zurücksetzen von ReactJS Datei-input
Habe ich die Datei hochladen input:
<input onChange={this.getFile} id="fileUpload" type="file" className="upload"/>
Und ich handle auf diese Weise hochgeladen:
getFile(e) {
e.preventDefault();
let reader = new FileReader();
let file = e.target.files[0];
reader.onloadend = (theFile) => {
var data = {
blob: theFile.target.result, name: file.name,
visitorId: this.props.socketio.visitorId
};
console.log(this.props.socketio);
this.props.socketio.emit('file-upload', data);
};
reader.readAsDataURL(file);
}
Wenn ich dieselbe Datei zweimal hochladen, dann laden-Ereignis nicht ausgelöst. Wie kann ich das beheben? Für einfache js-code, es war genug zu tun, die folgenden: dies.Wert = null; in change-handler. Wie kann ich es mit ReactJS?
onChange={this.getFile.bind(this)}
oder getFile = (e) => {InformationsquelleAutor Stepan Yakovenko | 2017-02-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, man kann nur löschen Sie den input-Wert wie diese :
Datei-Eingabe kann nicht gesteuert werden, es ist kein Reagieren auf spezifische Weise, das zu tun.
InformationsquelleAutor Freez
Diese Arbeit für mich - ref={"ref => dieser.fileInput = ref}
dann in meinem Fall, wenn die Datei hochgeladen wurde auf den server , lösche ich es mit der folgenden Aussage
getDerivedStateFromProps
und leider funktioniert es nicht, da wir keinen Zugriff aufthis
es.InformationsquelleAutor Jozcar
Was für mich gearbeitet war eine Einstellung
key
- Attribut auf die input-Datei, dann, wenn ich brauchte, um es zurücksetzen ich ein update für das key-Attribut Wert:Dass die Kräfte Reagieren, die zum Rendern der Eingabe wieder von vorne an.
Ich mag diese Idee. Dann kann ich die Kontrolle über das Eingabefeld von anderen Funktionen, die ist, was ich jetzt brauche. Es funktioniert einwandfrei. Danke.
Ich mag den Ansatz, aber ich wollte diese von
getDerivedStateFromProps
, und zum Glück funktioniert es dort so gut, weil wir immer noch Zugang zustate
. 🙂InformationsquelleAutor tonatiuhnb
Tue ich es durch die Aktualisierung
key
in meinem Datei-Eingang.Dies erzwingt eine re-Rendern und die zuvor ausgewählte Datei wird gehen.
Ändern des Status
inputKey
neu-Rendern der Komponente.Ein Weg zur Veränderung der
inputKey
werden, immer es zuDate.now()
auf klicken Sie auf eine Schaltfläche, die Sie ausführen soll, deaktivieren Sie das Feld.InformationsquelleAutor aelor
Können Sie auch diese in Ihrem input-element, wenn Sie wissen, dass Sie nicht gehen, um mit dem built-in-Datei-input-Wert.
Diese Weise ist der Wert immer wieder auf die " leere Zeichenfolge auf Rendern, und Sie nicht haben, um es aufzunehmen unbeholfen in ein onChange-Funktion.
InformationsquelleAutor IRTrapGod
Ich weiß, Datei-Eingang ist immer unkontrollierte jedoch der folgende code funktioniert immer noch in meiner eigenen porject, ich kann reset der Eingang mit überhaupt keine Probleme.
InformationsquelleAutor Jack L.
Hier ist meine Lösung mit redux form
InformationsquelleAutor Agustina Chaer
Reagieren, ist nichts anderes als JavaScript, und wir können DOM-manipulation Reagieren-code als auch.
Diese arbeiten sollen
InformationsquelleAutor Rastko Sasic