使用React.js在一定时间后更改状态

时间:2015-07-09 04:45:34

标签: javascript reactjs

我有一个在false和true之间切换的变量作为一个状态(我们可以称之为提交)。我想做的是在几秒钟之后将状态更改设置为true后将状态更改为false。我该怎么做?

我有一个单击按钮时调用的函数,以及状态发生变化的地方:

saveAndContinue: function(e) {
    e.preventDefault()

    if(this.state.submitted==false) {
        email = this.refs.email.getDOMNode().value
        this.setState({email: email})
        this.setState({submitted: !this.state.submitted});

    }

  }

我想补充一点,我有一个计时器设置变量提交回false。我该怎么做呢?

1 个答案:

答案 0 :(得分:13)

您可以设置超时以在给定时间后重置状态。请记住bind(this)到超时功能,以便this引用右this

saveAndContinue: function(e) {
    e.preventDefault()

    if(this.state.submitted==false) {
        email = this.refs.email.getDOMNode().value
        this.setState({email: email})
        this.setState({submitted: !this.state.submitted});
        setTimeout(function(){
             this.setState({submitted:false});
        }.bind(this),5000);  // wait 5 seconds, then reset to false
   }
}