【发布时间】:2020-03-07 01:21:32
【问题描述】:
我正在尝试用钩子制作一个计时器,但是当我启动应用程序时,它仍然只倒计时,即使秒数低于 0。我找不到问题出在哪里
import React, { useState, useEffect } from 'react'
import { Text, View } from 'react-native'
export default App = () => {
const [mins, setMins] = useState(2)
const [secs, setSecs] = useState(2)
useEffect(() => {
setInterval(() => {
if (secs <= 0) {
if (mins <= 0) alert('end')
else {
setMins(m => m - 1)
setSecs(59)
}
}
else setSecs(s => s - 1)
}, 1000)
}, [])
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text style={{ fontSize: 40 }}>
{mins}:{secs < 10 && 0}{secs}
</Text>
</View>
)
}
【问题讨论】:
-
您应该知道 setInterval 和 react re-renders 的使用,如下所述:stackoverflow.com/questions/57137094/…