Trong react.js, tốt hơn nên lưu trữ một tham chiếu timeout dưới dạng biến instance (this.timeout) hoặc một biến trạng thái (this.state.timeout)?
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);
}
...
})
hoặc là
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);
}
...
})
cả hai cách tiếp cận này đều hoạt động. Tôi chỉ muốn biết lý do sử dụng cái này hơn cái kia.
this.timeout = setTimeout(this.openWidget, DELAY);
this.state
trực tiếp, vì việc gọi điệnsetState()
sau đó có thể thay thế đột biến bạn đã tạo. Hãy xử lýthis.state
như thể nó là bất biến."