react怎么实现数字增长

react怎么实现数字增长
请大神指点
// state数据
state = {

rightIndexTop: [{
    rightIndexTopAllLeftTop: 10278
},{
    rightIndexTopAllLeftTop: 10278
},{
    rightIndexTopAllLeftTop: 10278
}]
numAll: 0

}

// componentDidMount里面
this.state.rightIndexTop.map(item => {

  let timer = null;
  if(this.state.numAll<item.rightIndexTopAllLeftTop){
    timer = setInterval(() => {
      this.setState({
        numAll: this.state.numAll+549
      })
    }, 0);
  }else{
    console.log(1)
    clearInterval(timer);
  }
})

这样为什么实现不了?
具体代码,谢谢指点
阅读 4.4k
3 个回答
let result = 0;
let timer = setInterval(() => {
  result += 549;
  this.setState({
    numAll: result
  })
  if(result >= 10217) {
    console.log(1)
    clearInterval(timer);
  }
}, 0);

你的代码中:

  1. 根本不会执行else中的代码,即不会去执行clearInterval(timer)
  2. setState 是异步的,不能保证执行setInterval里面的代码时,this.state.numAll的值是递增的。

可否具体点?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题