REACT,即使状态是数字,setInterval 仍会返回 NAN
REACT, setInterval keeps returning NAN even though state is a number
我对反应很陌生,我正在尝试创建一个倒数计时器,但是,当我调用 setInterval 函数 onClick 时,我的状态变为 NAN 并且不会递减,即使初始状态是数
interval = () => {
this.myInterval = setInterval(() => {
this.setState(({seconds}) => ({
second: parseInt(seconds) - 1
}))
}, 1000)
}
<button onClick={this.interval} className="start">START</button>
确保您的状态变量设置为大于 0,并且您应该在状态值为 0 时停止间隔,或者只是从 setState
中删除 parseInt
,这样它就不会产生任何问题.
还有一件事你没有在 setState
中使用 this.state.seconds
因为您在 parseInt
方法中提到的变量在没有 this.state
的情况下无效
this.state = { second: 0 }
interval = () => { this.myInterval = setInterval(() => { this.setState({second: this.state.seconds - 1}) }, 1000)}
你打错了,你正在从 seconds
递减(NaN
的来源不存在)并将值设置为 second
.
我对反应很陌生,我正在尝试创建一个倒数计时器,但是,当我调用 setInterval 函数 onClick 时,我的状态变为 NAN 并且不会递减,即使初始状态是数
interval = () => {
this.myInterval = setInterval(() => {
this.setState(({seconds}) => ({
second: parseInt(seconds) - 1
}))
}, 1000)
}
<button onClick={this.interval} className="start">START</button>
确保您的状态变量设置为大于 0,并且您应该在状态值为 0 时停止间隔,或者只是从 setState
中删除 parseInt
,这样它就不会产生任何问题.
还有一件事你没有在 setState
中使用 this.state.seconds
因为您在 parseInt
方法中提到的变量在没有 this.state
this.state = { second: 0 }
interval = () => { this.myInterval = setInterval(() => { this.setState({second: this.state.seconds - 1}) }, 1000)}
你打错了,你正在从 seconds
递减(NaN
的来源不存在)并将值设置为 second
.