Ist es in React.js besser, eine Timeout-Referenz als Instanzvariable (this.timeout) oder als Zustandsvariable (this.state.timeout) zu speichern?
React.createClass({
handleEnter: function () {
// Open a new one after a delay
var self = this;
this.timeout = setTimeout(function () {
self.openWidget();
}, DELAY);
},
handleLeave: function () {
// Clear the timeout for opening the widget
clearTimeout(this.timeout);
}
...
})
oder
React.createClass({
handleEnter: function () {
// Open a new one after a delay
var self = this;
this.state.timeout = setTimeout(function () {
self.openWidget();
}, DELAY);
},
handleLeave: function () {
// Clear the timeout for opening the widget
clearTimeout(this.state.timeout);
}
...
})
Beide Ansätze funktionieren. Ich möchte nur die Gründe für die Verwendung eines über dem anderen wissen.
Von dem Dokumentation: “NOCH NIE mutieren
this.state
direkt, als AnrufsetState()
danach kann die von Ihnen vorgenommene Mutation ersetzt werden. Behandelnthis.state
als ob es unveränderlich wäre.”– Felix Klinge
8. August 2014 um 16:12 Uhr
Tipp: Verwenden Sie die automatische Bindung von React:
this.timeout = setTimeout(this.openWidget, DELAY);
– David Hellsing
8. August 2014 um 21:05 Uhr
Was sollte DELAY eingestellt werden?
– justingordon
15. Dezember 2014 um 19:39 Uhr