【发布时间】:2018-10-14 23:37:49
【问题描述】:
我正在开发我的第一个大型 React Project Pomodoro Clock,经过多次尝试,我已成功将我的显示转换为 mm:ss(分钟:秒)格式。
现在的问题是,当我点击 开始按钮 时,显示的时间是以分钟而不是秒为单位倒计时。我尝试配置代码但它不起作用。 这是使我的状态转换为 mm 的函数:ss
function millisToMinutesAndSeconds(millis) {
var minutes = Math.floor(millis / 60000);
var seconds = ((millis % 60000) / 1000).toFixed(0);
return (seconds === 60 ? (minutes+1) + ":00" : minutes + ":" + (seconds < 10 ? "0" : "") + seconds);
}
这是我的开始按钮功能
handleStart() {
if(this.state.started === false ){
this.interval = setInterval(() => {
this.setState(prevState => ({
timer: prevState.timer - 1
}));
}, 1000)
this.setState({
started: true
})
}
}
为什么它以分钟为单位倒计时,我怎样才能让它以秒为单位而不是以分钟为单位递减?
请帮助我。这是我的代码笔
https://codepen.io/bradrar1/pen/bmoYXv
【问题讨论】:
-
你如何调用该转换函数?它从哪里得到毫秒值?
-
还有一个问题是调用
.toFixed()。这将返回一个字符串,而不是数字,因此比较seconds === 60将永远为真。 -
state.timer以秒为单位,那么您从哪里获得milliseconds? -
@pointy 也永远不会像
60000 % 60000 => 0那样是60@ -
@JonasWilms @JonasWilms
.toFixed(0)将充当舍入运算,因此 59.500 将导致 60,但如果将整个运算替换为Math.floor()你是对的。
标签: javascript reactjs