如何在反应组件构造函数中设置setInterval?

时间:2016-04-05 16:28:40

标签: javascript reactjs

主要组件时我需要setInterval。 我尝试在构造函数中设置它,如

  constructor(props) {
    super(props);
    this.props.fetchUserInfo();
    this.props.fetchProducts();
    setInterval(console.log('1'), 1000);
  }

componentDidMount

  componentDidMount = () => {
    setInterval(console.log('1'), 1000);
  };

但它总是记录'1'一次。如何正确启动间隔?

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