所以定时器工作。如果我this.state
使用特定的倒计时数字进行硬编码,则一旦页面加载,计时器就会开始倒计时。我希望时钟开始点击一个按钮倒计时并且具有改变功能null
的state
,以一个随机生成的数字。我对 React 有点陌生。我知道useState()
只设置初始值,但如果我使用点击事件,我该如何重置useState()
?我一直在尝试使用,setCountdown(ranNum)
但它使我的应用程序崩溃。我相信答案是显而易见的,但我只是没有找到。
如果我没有提供足够的代码,请告诉我。我不想发布整个shebang。
这是我的代码:
import React, { useState, useEffect } from 'react';
export const Timer = ({ranNum, timerComplete}) => {
const [ countDown, setCountdown ] = useState(ranNum)
useEffect(() => {
setTimeout(() => {
countDown - 1 < 0 ? timerComplete() : setCountdown(countDown - 1)
}, 1000)
}, [countDown, timerComplete])
return ( <p >Countdown: <span>{ countDown }</span> </p> )
}
handleClick(){
let newRanNum = Math.floor(Math.random() * 20);
this.generateStateInputs(newRanNum)
let current = this.state.currentImg;
let next = ++current % images.length;
this.setState({
currentImg: next,
ranNum: newRanNum
})
}
<Timer ranNum={this.state.ranNum} timerComplete={() => this.handleComplete()} />
<Button onClick={this.handleClick} name='Generate Inputs' />
<DisplayCount name='Word Count: ' count={this.state.ranNum} />