2016-07-25 2 views
0

Ich begann in letzter Zeit, mit React-Redux-Architektur zu arbeiten. Ich möchte nach einer erfolgreichen Operation einige Felder bereinigen. Ich weiß, wie man es mit dem react-redux Weg macht, aber ich frage mich: Wäre es eine schlechte Praxis, diese Felder mit einfachem Javascript zu reinigen? Ich weiß, dass es die Zeitmaschine betrifft, aber ich betrachte dies nicht als einen kritischen Zustand zu bewahren.Direkte DOM-Zugriffe bei der Arbeit mit React-Redux

Pro und Contra sind willkommen und nicht nur eine strikte Antwort.

Und ein Beispiel:

<input type="text" onChange={this.onChange}/> 

ich mit dem onChange Ereignis privaten Bereich des aktualisieren Eltern. Ich weiß, dass ich das private Feld an das Eingabewertfeld binden kann, aber da ich nur das Feld löschen muss, dachte ich, dass ich es vielleicht vermeiden kann.

Vielen Dank im Voraus!

+0

Können Sie ein Beispiel dafür zeigen, was Sie unter dem "reaktiv-reduktiven Weg" verstehen? – Aaron

+0

meine Frage bearbeiten. lassen Sie mich wissen, wenn etwas anderes fehlt. Vielen Dank! –

+0

Wenn Sie die React-Mechanismen kennen, die zum Löschen des Eingabefeldes zur Verfügung stehen, sie aber nicht verwenden möchten, warum verwenden Sie dann React? – Brandon

Antwort

1

Das Speichern einiger nicht wichtiger Zustände in Ihren Komponenten widerspricht nicht den Regeln von Redux. Es macht die Dinge nur weniger konsistent und vorhersehbar. Auf lange Sicht können Sie die kleinen Teile des Zustands, die Sie in Ihrem Komponentenbaum haben, bereuen.

Soweit Ihr Beispiel, müssen Sie nicht auf das DOM verweisen, um den Textwert zurückzusetzen. Da Sie Ihren Textwert bereits in einem privaten Feld speichern, speichern Sie das Feld nicht im Status?

<input type="text" value={this.state.text} onChange={this.onChange} /> 

Dann es zurücksetzen Sie nur setState({text: ""}) können.

+0

isnt setState ist gegen Redux-Regeln, da der Status unveränderlich sein muss? Oder haben Sie dieses Beispiel als einen besseren Ansatz als den direkten Dom-Zugang angegeben? –

+0

Die Verwendung von Redux bedeutet nicht, dass Sie 'setState' niemals verwenden sollten, es bedeutet nur, dass Sie Redux für diesen Status nicht verwenden (und da Sie bereits State in einem privaten Feld speichern, verwenden Sie Redux dafür nicht bereits). Redux diktiert nicht, dass Sie den Status * all * im Redux-Speicher speichern müssen. Sie müssen nur den Unterschied verstehen, – Aaron

+0

große Antwort! Vielen Dank! –

Verwandte Themen