在react.js中,将超时引用存储为实例变量(this.timeout)或状态变量(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);
}
...
})
要么
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);
}
...
})
这两种方法都有效。我只想知道一个使用另一个的原因。
提示:使用React的自动绑定:
—
David Hellsing
this.timeout = setTimeout(this.openWidget, DELAY);
延迟应设置为什么?
—
justingordon 2014年
this.state
直接进行突变,因为setState()
随后的调用可能会替换您所做的突变。将其this.state
视为不可变的。”