主要组件时我需要setInterval。 我尝试在构造函数中设置它,如
constructor(props) {
super(props);
this.props.fetchUserInfo();
this.props.fetchProducts();
setInterval(console.log('1'), 1000);
}
或componentDidMount
componentDidMount = () => {
setInterval(console.log('1'), 1000);
};
但它总是记录'1'一次。如何正确启动间隔?
答案 0 :(得分:9)
setInterval(console.log('1'), 1000);
调用 console.log('1')
并将其返回值传递到setInterval
,与foo(bar())
调用 {的方式完全相同{1}}并将其返回值传递给bar
。
您想要将函数引用传递给它:
foo
或者如果您需要setInterval(function() {
console.log('1');
}, 1000);
在该函数内部相同且尚未使用ES2015语法:
this
setInterval(function() {
console.log('1');
}.bind(this), 1000);
返回一个新函数,在调用时,使用您提供的Function#bind
值调用原始函数。
或者如果您使用的是ES2015语法
this
这将关闭它创建的setInterval(() => {
console.log('1');
}, 1000);
,不需要this
。