在本机反应中,我的状态如下:
constructor(props) {
super(props);
this.state = {
Time:0
};
};
在componentDidMount中,我这样设置状态:
var time = this.props.navigation.state.params.time * 60;
this.setState({Time: time });
并像下面这样在返回函数中使用此状态:
<TimerCountdown
initialSecondsRemaining={1000 * this.state.Time}
onTimeElapsed={() => {
this.EndOfQuiz
}}
allowFontScaling={true}
style={{ fontSize: 20, flex: 1, textAlign: 'center', }}
/>
现在我的问题是:
当我使用setState更改其他状态时,计时器重置。 我这样更改计时器:
<TimerCountdown
initialSecondsRemaining={1000 * this.state.Time}
onTick = {
(secend)=>{
this.setState({
Time : secend
})
}
}
onTimeElapsed={() => {
this.EndOfQuiz
}}
allowFontScaling={true}
style={{ fontSize: 20, flex: 1, textAlign: 'center', }}
/>
但是我得到一个错误:
答案 0 :(得分:0)
您不能在渲染功能中设置状态。这将导致多个循环,并导致崩溃。
在您的情况下,这会导致多个循环并导致崩溃,因为设置状态没有停止,它处于无限循环中
onTick = {
(secend)=>{
this.setState({
Time : secend
})
}
}
您的问题在这里。您可能需要勾选此功能。状态正在变幻莫测,并引起了问题。