设置状态时在return()中响应本机重置状态

时间:2019-07-28 11:42:01

标签: react-native react-native-android

在本机反应中,我的状态如下:

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', }}
/>

但是我得到一个错误:

Maximum update depth exceeded.

1 个答案:

答案 0 :(得分:0)

您不能在渲染功能中设置状态。这将导致多个循环,并导致崩溃。

在您的情况下,这会导致多个循环并导致崩溃,因为设置状态没有停止,它处于无限循环中

  onTick = {
             (secend)=>{
                this.setState({
                    Time : secend
                })
             }
          }

您的问题在这里。您可能需要勾选此功能。状态正在变幻莫测,并引起了问题。

相关问题