【发布时间】:2020-07-12 11:51:05
【问题描述】:
这是我的程序。我用开始和停止按钮创建了秒表,一切正常。我的下一步是让秒表通过空格键对键盘做出反应。当我按下开始按钮时,秒表开始运行。当我按下空格键时,秒表不再只是停在当前位置,而是从 0 重新开始并开始快速计数。停止按钮正常工作。
import React from 'react';
class Home extends React.Component {
constructor(props) {
super(props);
this.state = {milliSecondsElapsed: 0};
this.handleStopClick = this.handleStopClick.bind(this);
this.keyPress = this.keyPress.bind(this);
}
keyPress = (e) => {
if (e.keyCode == 32){
handleStopClick();
}
}
getMilliseconds() {
return ("0" + this.state.milliSecondsElapsed).slice(-2);
}
// var number = this.state.milliSecondsElapsed.toString().length;
getSeconds() {
var milli = this.state.milliSecondsElapsed;
var seconds = 0;
seconds = milli / 100;
var myTrunc = Math.trunc(seconds);
myTrunc = myTrunc % 60;
return ("0" + myTrunc).slice(-2);
}
getMinutes() {
var milli = this.state.milliSecondsElapsed;
var seconds = 0;
var minutes = 0;
seconds = milli / 100;
minutes = seconds / 60;
var myTrunc = Math.trunc(minutes);
return ("0" + myTrunc).slice(-2);
}
handleStartClick = () => {
this.setState({
milliSecondsElapsed: (0)
});
this.timer = setInterval(() => {
this.setState({
milliSecondsElapsed: (this.state.milliSecondsElapsed + 1)
});
}, 10)
}
handleStopClick = () => {
clearInterval(this.timer);
}
render() {
return (
<div>
<h1>{this.getMinutes()}:{this.getSeconds()}.{this.getMilliseconds()}</h1>
<button type="button" onClick={this.handleStartClick}> start </button>
<button type="button" onClick={this.handleStopClick}> stop </button>
<input value={this.state.milliSecondsElapsed} onKeyDown={this.keyPress} onChange={this.handleStopClick}/>
</div>
);
}
}
export default Home;
有人知道是什么原因造成的吗?
【问题讨论】:
标签: javascript reactjs