【发布时间】:2016-12-12 14:10:13
【问题描述】:
学习 ReactJS 我正在开发一个简单的倒计时应用程序。倒计时组件如下所示:
const Countdown = React.createClass({
getInitialState: function() {
return {
remaining: 10,
running: true,
};
},
componentDidMount: function(){
if (this.state.running) {
setInterval(this.tick, 1000);
} else {
console.log("already paused");
};
},
tick: function(){
if (this.state.remaining === 0) {
this.setState({ remaining: 10 });
this.props.updateStats();
} else {
this.setState({ remaining: this.state.remaining -1 });
};
},
handlePauseClick: function(){
this.setState({ running: false });
},
render: function(){
const s = this.state.remaining;
return (
<div className='ui centered card'>
<div className='content centered'>
<h1>{helpers.secondsToHuman(s)}</h1>
<ButtonControls
handlePauseClick={this.handlePauseClick}
/>
</div>
</div>
)
},
});
倒计时开始运行。单击暂停按钮时,它应该停止。 componentDidMount 只在 running 为 true 时才运行定时器:
if (this.state.running) {
setInterval(this.tick, 1000);
} else {
console.log("already paused");
};
处理点击后:
this.setState({ running: false });
我期待组件被重新渲染,并且 componentDidMount 将再次执行。但是,这并没有发生。 componentDidMount 似乎只运行一次。
感谢您的想法
【问题讨论】:
标签: reactjs