Javascript React不绑定函数调用,尽管有相反的警告
我有一个React组件,需要在Javascript React不绑定函数调用,尽管有相反的警告,javascript,reactjs,Javascript,Reactjs,我有一个React组件,需要在setTimeout()调用中运行检查。下面是我的方法调用 componentDidUpdate: function () { // Despite console warnings, React does *not* do this. var boundCheck = this.checkYourself.bind(this); if (!this.timeoutId) { this.timeoutId = window.s
setTimeout()调用中运行检查。下面是我的方法调用
componentDidUpdate: function () {
// Despite console warnings, React does *not* do this.
var boundCheck = this.checkYourself.bind(this);
if (!this.timeoutId) {
this.timeoutId = window.setTimeout(function () {
boundCheck();
}, UPDATE_CHECK_INTERVAL);
}
},
这将在控制台上产生以下警告:
bind():将组件方法绑定到组件。React以高性能方式自动为您执行此操作,因此您可以安全地删除此呼叫
但是,如果我将方法更改为以下内容:
componentDidUpdate: function () {
if (!this.timeoutId) {
this.timeoutId = window.setTimeout(function () {
this.checkYourself();
}, UPDATE_CHECK_INTERVAL);
}
},
我得到了一个异常,因为此
引用了窗口
。有没有一种方法可以让React高兴呢?您需要在setTimeout
中绑定函数:
componentDidUpdate: function () {
if (!this.timeoutId) {
this.timeoutId = window.setTimeout(function () {
this.checkYourself();
}.bind(this), UPDATE_CHECK_INTERVAL);
}
},
this.checkYourself()
现在应该按预期调用组件。您需要在setTimeout
中绑定函数:
componentDidUpdate: function () {
if (!this.timeoutId) {
this.timeoutId = window.setTimeout(function () {
this.checkYourself();
}.bind(this), UPDATE_CHECK_INTERVAL);
}
},
this.checkYourself()
现在应该按预期调用组件。自0.4版以来,React自动绑定您在createClass中创建的所有方法并将其绑定到正确的上下文,您只需在createClass中声明一个方法并直接调用setTimeout(this.method,1000)
自0.4版以来,React自动绑定您在createClass中创建的所有方法并将其绑定到正确的上下文,您只需在createClass中声明一个方法并直接调用setTimeout(this.method,1000)
您也可以使用箭头功能来实现这一点:
this.timeoutId = setTimeout(() => {
this.checkYourself();
}, UPDATE_CHECK_INTERVAL);
使用reactv0.14.6
进行测试,您也可以使用箭头功能来实现这一点:
this.timeoutId = setTimeout(() => {
this.checkYourself();
}, UPDATE_CHECK_INTERVAL);
用reactv0.14.6
测试哦,太棒了。非常感谢。哦,太好了。非常感谢。谢谢,但是将这个
保存到一个变量中并在setTimeout()中使用它是一种与绑定
相同的方法。如果React支持它,我宁愿尝试“正确的方式”,而且它看起来确实支持!谢谢,但是将这个
保存到一个变量中并在setTimeout()中使用它是一种与绑定
相同的方法。如果React支持它,我宁愿尝试“正确的方式”,而且它看起来确实支持!