定期拨打Api电话

时间:2017-06-10 18:23:37

标签: reactjs redux

对不起新手问题,我是新人的反应 我有多个组件,其中一些我在间隔中进行Api调用以保持列表更新。

Angular 中,我可以使用requestAnimationFrame创建一个间隔广播事件的服务,并在这些事件中进行Api调用。这是一个好主意,因为:

  • 我们不会在许多组件中创建多个间隔,保持DRY。
  • 我们降低了未破坏间隔的风险。
  • 当应用程序未处于活动标签页时,我们会保存Api调用。
  • 我们可以在单一服务中操纵Api通话的费率。

等一些优点。

在许多情况下,例如this,我认为在反应/减少中做同样的事情并不是一个好方法,我们最好尽量将行动调度保持在最低限度。但如果我在每个组件中创建一个间隔,它就不再干了。

我的问题是我应该选择哪种方式,还是有另一种方法?

1 个答案:

答案 0 :(得分:1)

您可以使用reacts componentDidMount(),这对于设置一个时间间隔和进行api调用非常简单,尽管不建议这样做,但是可以将其用于测试目的。

componentDidMount() {
    this.myInterval = setInterval(() => {

        const { seconds} = this.state

        if ( seconds> 0 ) {
            this.setState(({ seconds }) => ({
                seconds: seconds -1
            }))
        } else if (seconds==0) {
            return(this.color('#840000'))
        }
    }, 1000) 
    Axios.get('https://jsonplaceholder.typicode.com/users')
  .then(response => {
      console.log(response);
      this.setState({ items: response.data.result.items});
  })
  .catch(error => {
    console.log(error);
  });
}