为了账号安全,请及时绑定邮箱和手机立即绑定

当我按空格键停止秒表时,它从 0 重新开始并开始加速

当我按空格键停止秒表时,它从 0 重新开始并开始加速

慕婉清6462132 2022-11-11 16:10:25
这是我的程序。我用开始和停止按钮创建了秒表,一切正常。我的下一步是让秒表通过空格键对键盘做出反应。当我按下开始按钮时,秒表开始运行。当我按下空格键时,秒表并没有停在当前位置,而是从 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);    }有谁看到可能导致这种情况的原因?
查看完整描述

2 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

您将keyPress回调附加到onKeydown输入,但是当您单击开始按钮以启动秒表时,该按钮仍然具有焦点。击中空间只是再次开始,这就是它“重置”计时器并开始变得更快的原因,你没有清除以前的间隔,所以它们继续运行。如果您将焦点转移到输入然后点击空格,它会按预期工作。


在计时器开始时禁用开始按钮有助于不开始新的间隔。


<button

  disabled={this.state.milliSecondsElapsed}

  type="button"

  onClick={this.handleStartClick}

>

  {" "}

  start{" "}

</button>


查看完整回答
反对 回复 2022-11-11
?
GCT1015

TA贡献1827条经验 获得超4个赞

我认为你不能明确间隔。请检查这个问题


查看完整回答
反对 回复 2022-11-11
  • 2 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信