当前位置: 首页 > 知识库问答 >
问题:

检测两个条件之间的经过时间

白文彬
2023-03-14

我目前正在开发一个React应用程序,并试图检测达到某个输入值长度所需的时间。

它是一个受控输入,其值通过redux action和Reducer存储和设置。

我想在输入值为!==“”时开始计数时间,在值.length等于13时停止计数。

此外,在应用程序逻辑中,如果到达.length===13所花费的时间类似于100ms(+或-),则意味着应用程序用户使用了条形码扫描器,否则,他用键盘键入了条形码。

我尝试使用带有new Date()的var来获取时间差异,但是render()逻辑阻止了对经过时间计数的维护。。。

你知道我怎样才能达到我的目标吗?

我把组件代码留给你就在下面,提前谢谢你!

import React from "react";
import StoreInput from "../StoreInput/index";
import { connect } from "react-redux";
import "./index.scss";

import { setStoreInputFieldValue } from "../../actions/store.actions";
import { addArticleToStore } from "../../actions/articles.actions";

type ScanSetProps = {
  // Redux State
  storeInputFieldValue?: any;

  // Redux Actions
  setStoreInputFieldValue?: any;
  addArticleToStore?: any;
};

class ScanSet extends React.Component<ScanSetProps> {
  handleScanSet = (event) => {
    const { setStoreInputFieldValue } = this.props;
    setStoreInputFieldValue(event.target.value);
  };

  // Component render
  render() {
    const { storeInputFieldValue, addArticleToStore } = this.props;

    return (
      <div className="ScanSet">
        <StoreInput
          idStoreInput={"scanSetInput"}
          typeStoreInput={"number"}
          placeholderStoreInput={
            "Scannez le code barre ou saisissez le code EAN"
          }
          storeInputFillMethod={this.handleScanSet}
        />
        <button
          id="scanSetButton"
          className={
            storeInputFieldValue.length === 13
              ? "enabledButton"
              : "disabledButton"
          }
          onClick={() => addArticleToStore(storeInputFieldValue)}
        >
          Ajouter
        </button>
      </div>
    );
  }
}

const mapStateToProps = (state) => ({
  storeInputFieldValue: state.store.storeInputFieldValue,
});

const mapDispatchToProps = (dispatch) => ({
  setStoreInputFieldValue: (input_value) =>
    dispatch(setStoreInputFieldValue(input_value)),
  addArticleToStore: (article_ean) => dispatch(addArticleToStore(article_ean)),
});

export default connect(mapStateToProps, mapDispatchToProps)(ScanSet);

共有1个答案

柯波
2023-03-14

我建议使用state。

当输入!==''时,this.setstate((state)=>{。。。state,starttime:new Date()。gettime()})当value.length===13时,this.setstate((state)=>{。。。state,endtime:new Date()。gettime()}

然后您可以有另一个部分来解释差异,(endtime-starttime)

因为您使用的是redux,如果您有一个片断说明了这一点。 您可以简单地分派这两个操作(setStartTime,setEndTime),并让reducer处理上面的逻辑

 类似资料:
  • 问题内容: 我是Android编程的新手,所以请您为我的问题提供帮助。我正在尝试以秒/毫秒为单位测量MouseEvent.ACTION_DOWN和MouseEvent.ACTION_UP之间的时间。 我的问题实际上是因为seconds变量没有显示我想要的内容,我什至不知道它的测量结果是否正确,对于上面的示例,持续时间为16545(???!?!?) -3秒。我该怎么做才能在两个MotionEvent

  • 问题内容: 是否有一个跟踪用户某些事件的表。 总是有一个动作,之后可能会有一个动作。 现在,我想查询这两个动作之间的时间差,以获取用户和之间的time_diff 。 现在,您可以假定没有多个条目(例如,至少一个,最大另一个)。 我想要这样的结果: 问题答案: 您可以使用以下查询: 该子句过滤掉仅包含一个动作的组,例如OP中的with记录。 演示在这里

  • 问题内容: 抱歉,我的问题是否愚蠢,没关系。但是我只想知道在这两种情况下会发生什么。 两者都只给出相同的结果。但是我知道有一些原因。我不知道这一点。这两个条件有什么区别? 问题答案: 它们之间没有任何区别。许多程序员使用第二种方法只是为了确保他们没有得到。就这样。

  • 下面是我的解决方案,但我不清楚“删除”的情况下代码应该是什么样子 删除字符的代码应该是什么样子的? 更新-添加了更多的示例 下面是Dmitry和Ingen答案的比较:https://dotnetfiddle.net/mjqdao

  • 问题内容: 我正在写的游戏中有两个角色,玩家和敌人。定义如下: 然后用: 我可以使用键盘来移动player(),但是在尝试检测两者之间的碰撞时我很茫然。很多人说过要使用Rectangles,但是作为一个初学者,我看不到如何将其链接到现有代码中。谁能为我提供一些建议? 问题答案: 我认为您的问题是您没有为球员和敌人使用好的OO设计。创建两个类: 您的播放器应具有X,Y,Width和Height变量。

  • 问题内容: 我想知道判断Shape对象是否与另一个形状相交的最佳方法。目前,我在游戏中已对碰撞检测进行了分类,只要它涉及与矩形相交的Shape,反之亦然。我遇到的问题是Shape类中的intersects()方法只能将Rectangle或Point作为参数,而不能将另一个Shape用作参数。有没有一种有效的方法来测试两个Shape对象是否以任何方式重叠?我尝试的一种方法是使用for循环生成一个点区

  • 我想在对象使条件,例如,如果在响应我们有stateCode,选择属性stateCode,如果我们有stateName在响应选择stateName,它可能,你有解决方案吗? 这是对象的示例: 这是stateCode,我想包括在那里,并作出条件,如果作为回应,我验证我们有stateCode,选择州代码,如果我们有stateName,选择stateName,有人帮助吗? 此外,我还使用公共断言函数来验证

  • 我正在开发一个spring api,在这个api中我使用postgres并保存一个timestamp类型的字段,字段名为。现在我想检查这个字段是否在两个不同的时间戳之间。 现在我正在使用这个: 是否可以在之间使用