【发布时间】:2020-06-19 14:38:13
【问题描述】:
我目前正在开发一个 React 应用程序并尝试检测达到某个输入值长度所需的时间。
它是一个受控输入,通过redux action和reducer存储和设置值。
我想在输入值为!== ""时开始计时,在.length等于13时停止计时。
此外,在应用程序逻辑中,如果到达.length === 13 所需的时间类似于100ms (+ 或 - ),这将意味着应用程序用户使用了条形码扫描仪,否则,他输入了条形码键盘。
我尝试使用带有new Date() 的变量来获取时间差异,但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);
【问题讨论】:
标签: javascript reactjs redux time react-redux