我正在制作带有三个图像的滑块。对于此幻灯片的后退按钮,它应从最后一张图像开始并返回到1。控制台登录时,以下代码从3递减到2,但是丢失1,所以3 2 3 2 3 2 ...我不不明白为什么吗?怎么了

this.state = {
      imageCount: 0,
   }

previousSlide() {
    this.setState({
      imageCount: 3
    });
    if (this.state.imageCount === 3) {
    this.setState((prevState) => ({
      imageCount: (prevState.imageCount - 1 )
    }));
  }
  console.log("previousSlide", this.state.imageCount)
}

最佳答案

最简单的解决方案是在setState内部执行逻辑,这样您只需调用一次即可:

previousSlide() {
    this.setState({imageCount} => (
      {imageCount: imageCount === 0 ? 3 : imageCount - 1}
    );
  }
}


此代码将总是将imageCount设置为比以前少1,除非它为0,在这种情况下它将循环为3。

关于javascript - 减少setState中的计数器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51565203/

10-09 22:51