【发布时间】:2017-04-14 15:10:15
【问题描述】:
我在 JavaScript 中看到了很多倒数计时器,并希望在 React 中使用一个。
我借用了我在网上找到的这个功能:
secondsToTime(secs){
let hours = Math.floor(secs / (60 * 60));
let divisor_for_minutes = secs % (60 * 60);
let minutes = Math.floor(divisor_for_minutes / 60);
let divisor_for_seconds = divisor_for_minutes % 60;
let seconds = Math.ceil(divisor_for_seconds);
let obj = {
"h": hours,
"m": minutes,
"s": seconds
};
return obj;
};
然后我自己写了这段代码
initiateTimer = () => {
let timeLeftVar = this.secondsToTime(60);
this.setState({ timeLeft: timeLeftVar })
};
startTimer = () => {
let interval = setInterval(this.timer, 1000);
this.setState({ interval: interval });
};
timer = () => {
if (this.state.timeLeft >0){
this.setState({ timeLeft: this.state.timeLeft -1 });
}
else {
clearInterval(this.state.interval);
//this.postToSlack();
}
};
目前点击它会将屏幕上的时间设置为:Time Remaining: 1 m : 0 s
但它不会将其减少到 Time Remaining: 0 m : 59 s 然后 Time Remaining: 0 m : 58 s 等等等等
我想我需要使用不同的参数再次调用该函数。我该怎么做呢?
编辑:我忘了说,我想要这个功能,以便我可以使用秒到分和秒
【问题讨论】:
-
the React documentation examples 之一是一个可以自我更新的时钟,看起来它会相当有用...
-
@T.J.Crowder 这是半有用的。他们只是得到一个时间,虽然可以通过 componentDidMount 返回它,而我只想从起始位置提取秒和分钟..
-
也许您可以使用 Stack Snippets 在问题中添加一个可运行的 minimal reproducible example support React and JSX,这样我们就可以看到问题的实际效果。
-
@T.J.Crowder 发现在 JSfiddle 中创建一个非常困难,因为我在许多文件中使用了许多带有许多道具的组件
-
@T.J.Crowder 来自问题,你觉得什么有意义? (看看我是否可以为解释不太清楚的事情添加更多知识)
标签: javascript reactjs countdown