簡體   English   中英

reactjs setInterval無法按預期工作

[英]reactjs setInterval doesn't work as expected

我是新來的反應猶太人。

我想把時間花在我的網頁上。 但是,當我使用setInterval ,時間不起作用。 只是在頁面加載時停止。

我正在使用React.createClass:

var MainContent = React.createClass({

  getInitialState: function(){
    return {waktu: new Date().toLocaleTimeString()}
  },

 componentDidMount: function(){
   setInterval(this.tick, 1000)
 }, 

 tick: function(){
    this.setState({waktu: this.state.waktu})
 },

  render: function(){

    return(
      <div className="container">
        <div className="panel panel-success">
          <div className="panel-heading">
            <h3 className="panel-title">Panel title</h3>
          </div>
          <div className="panel-body">
            Panel content &nbsp;
            {this.state.waktu}
          </div>
        </div>
      </div>
    );
  }
});

你需要將它綁定到你的setTimeOut函數,你可以在這里看到更多關於它的信息: https//facebook.github.io/react/docs/handling-events.html

setInterval(this.tick, 1000).bind(this)

並且為了更改您的日期,只需在您的州申請新的日期:

this.setState({waktu: new Date()})

將初始時間代碼拉入單獨的函數,並在設置setState時調用它。

function getTime() {
  return new Date().toLocaleTimeString()
}

getInitialState: function() {
  return { waktu: getTime() }
}

tick: function() {
  this.setState({ waktu: getTime() })
}

您還需要在setInterval中綁定該函數。

在每個間隔后將狀態設置為自己的值不會有幫助。 您需要設置為當前時間

 var MainContent = React.createClass({ getInitialState: function(){ return {waktu: new Date().toLocaleTimeString()} }, componentDidMount: function(){ setInterval(this.tick, 1000) }, currentTime: function () { return new Date().toLocaleTimeString(); }, tick: function(){ this.setState({waktu: this.currentTime()}) }, render: function(){ return( <div className="container"> <div className="panel panel-success"> <div className="panel-heading"> <h3 className="panel-title">Panel title</h3> </div> <div className="panel-body"> Panel content &nbsp; {this.state.waktu} </div> </div> </div> ); } }); ReactDOM.render(<MainContent/>, document.getElementById('app')); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> <div id="app"></div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM