我正在嘗試計算一秒鐘內按下按鈕的次數。
它在作業,在大多數情況下,它會跟蹤并輸出它。
但問題是它輸出的是上一秒而不是當前秒的按鈕按下次數。
我認為如果以某種方式顛倒順序它會起作用,我該如何修復這個功能?謝謝。

const [clicksPerSecond, setClicksPerSecond] = useState(0);
const [tempCounter, setTempCounter] = useState(0);
const [tempCounter2, setTempCounter2] = useState(0);
const { setCounter, counter } = useContext(CountContext);
useEffect(() => {
console.log(tempCounter);
if (tempCounter != 0) {
if (tempCounter == 1) {
setTimeout(() => {
setClicksPerSecond(tempCounter2);
setClicksPerMinute(tempCounter2 * 60);
setTempCounter(1);
console.log('Clicks per second final: ' tempCounter2);
}, 1000)
} else {
setTempCounter2(tempCounter);
console.log('Clicks per second: ' tempCounter);
}
}
setTempCounter(tempCounter 1);
}, [counter])
return (
<View style={[styles.container, { backgroundColor: colors.background }]}>
<View elevation={7.5} style={{ backgroundColor: colors.background, borderRadius: 500 }}>
<TouchableOpacity
onPress={() => setCounter(counter 1)}
style={[styles.counterButton, { backgroundColor: colors.primary, borderColor: colors.container, borderWidth: 0 }]}>
<Text></Text>
<Text style={{ fontSize: 60 }}>{counter}</Text>
<Text>{clicksPerSecond} CPS</Text>
</TouchableOpacity>
</View>
</View>
);
}
uj5u.com熱心網友回復:
您可以改為只增加計數并在一秒鐘后減少它。
export default function App() {
const [clicks, setClicks] = React.useState(0);
const onClick = () => {
setClicks((c) => c 1);
setTimeout(() => setClicks((c) => c - 1), 1000);
};
return (
<div>
<button onClick={onClick}>Click me</button>
<p>Clicked {clicks} times</p>
</div>
);
}
您還需要跟蹤組件在遞減之前是否已卸載,我認為您可以使用 refs 來完成。例子
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/537124.html
上一篇:為什么我的應用程式只顯示加載螢屏?并警告我TypeError:undefinedisnotanobject(evaluating'_asyncStorage.AsyncStorage.get
