【发布时间】:2022-02-17 08:55:50
【问题描述】:
我有一个应用程序在按下按钮时会启动一个间隔。
我想在状态达到 5 后停止间隔。
我尝试在UseEffect 中添加 if 条件,并尝试将条件放在函数本身中,但两者似乎都不起作用。 console.log(sequence) 确实在 useEffect 中成功打印我可以看到序列确实增加了,但它一直增加超过 5 并且永远不会 clearInterval。
const [sequence, setSequence] = useState(0)
const interval = () =>{
setInterval(() => {
setSequence((prevSequence) => (
prevSequence+1
))
}, 2000);
}
const plant = ()=>{
interval()
console.log(sequence)
if(sequence>5){
clearInterval (interval)
}
}
useEffect(() => {
console.log(sequence)
if(sequence>5){
return () => clearInterval(interval);
}
}, [sequence]);
return(
<View style = {styles.container} >
<Image
style={{height:500,width:300,}}
source= {tomato[sequence]}
/>
<Button
title = 'Fertilize Plant'
style= {styles.text}
onPress= {plant}>
</Button>
</View>)
}
【问题讨论】:
标签: react-native react-hooks setinterval clearinterval