arrays - SetInterval 每次在 React Js 中显示默认状态值
问题描述
每次我想将 CurrentIndex 运行到自定义持续时间或动态数组长度时,它都显示 0
Const [currentIndex, setCurrentIndex] = useState(1);
useEffect(() => {
setInterval(() => {
setCurrentIndex(5);
if (currentIndex >= 5) {
setCurrentIndex(0);
}
console.log('Current Index', currentIndex);
}, 3000);
}, []);
解决方案
React 状态是异步的,因此更新需要一些时间延迟。所以使用单独 useEffect
的钩子来监听索引
Const[currentIndex, setCurrentIndex] = useState(1);
useEffect(() => {
if (currentIndex >= 5) {
setCurrentIndex(0);
}
console.log('Current Index', currentIndex);
}, [currentIndex])
useEffect(() => {
setInterval(() => {
setCurrentIndex(5);
}, 3000);
}, []);
推荐阅读
- android - Firebase 实时数据库按子查询和分页结果
- ios - 将不同的单元格对象插入 IndexPath
- python - 我如何使用 django 进行此查询
- node.js - 如何在不知道服务器上的数据量的情况下知道要发出多少请求
- xamarin - 来自服务器的无效状态。可能伪造!Xamarin.Auth 中的错误
- android - Android Studio - 如何摆脱不同大小写的重复包?
- c# - 如何使用在 C# 中的方法之外实例化的变量?
- javascript - Vue.JS:为什么父元素不会收到事件?父级必须是自定义组件吗?
- mongodb - 带有 $cond 的 mongo 聚合在嵌套查找中不能与 $eq 一起使用
- java - Java程序分别计算单词和空格,但该程序显示:线程“main”中的异常java.lang.StringIndexOutOfBoundsException: