[英]SetInterval Showing default State value every time in React Js
CurrentIndex is showing 0 every time I want to run it to custom duration or dynamic array length每次我想将 CurrentIndex 运行到自定义持续时间或动态数组长度时,它都显示 0
Const [currentIndex, setCurrentIndex] = useState(1);
useEffect(() => {
setInterval(() => {
setCurrentIndex(5);
if (currentIndex >= 5) {
setCurrentIndex(0);
}
console.log('Current Index', currentIndex);
}, 3000);
}, []);
React state is async so it take some time delay for update. React state 是异步的,因此更新需要一些时间延迟。 so use separate
useEffect
hook for listen index所以使用单独的
useEffect
钩子来监听索引
Const[currentIndex, setCurrentIndex] = useState(1);
useEffect(() => {
if (currentIndex >= 5) {
setCurrentIndex(0);
}
console.log('Current Index', currentIndex);
}, [currentIndex])
useEffect(() => {
setInterval(() => {
setCurrentIndex(5);
}, 3000);
}, []);
You can do it like that你可以这样做
var [currentIndex, setCurrentIndex] = useState(1); useEffect(() => { setInterval(() => { setCurrentIndex(5); if (currentIndex >= 5) { setCurrentIndex(0); } console.log("Current Index", currentIndex); }, 3000); }, [currentIndex]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.