如何在 reactjs 应用程序中实现条码扫描器?
How to implement barcode scanner in reactjs application?
我正在开发订单扫描 Web 应用程序,我面临的挑战是,如果条形码匹配,我将在我的 react.js 应用程序中接收数据。我将使用条形码扫描仪设备,所以我可以使用这个 npm 包 https://www.npmjs.com/package/react-barcode-reader。如果是这样,如何在我的 React 应用程序中实现它?
我在网上搜索了答案。我在 react.js.
中找不到我的具体问题的任何内容
我建议使用 React Barcode Scanner NPM 包。该站点上有一个简单的演示。您可以使用他们的条码扫描器组件:
<BarcodeReader
onError={handleError}
onScan={handleScan}
/>
您可以将该组件应用到您希望用户执行扫描的位置。您只需要制作一个 handleScan 和 handleError 函数。
示例:
const [scanData, setScanData] = useState()
const handleScan = (data) => {
setScanData(data)
}
const handleError = (err) => console.error(err)
数据将存储在 scanData 变量中。希望对您有所帮助。
条形码扫描仪只是一种输入设备。把它想象成一个键盘。
您可以通过任何 TextInputs 组件接收其输入。
如果您的条码扫描器被编程为以“\n”结束,那么 TextInput 也会触发 onSubmit 事件。
这是一个非常简单的 React 条形码读取示例,使用简单的 vanilla javascript:
这可以使用时间范围来检测条形码读数。您可以轻松地将其更改为结束代码(不需要超时)
import { useEffect, useState } from "react";
import "./App.css";
function App() {
const [barcodeRead, setBarcodeRead] = useState("");
const barcode = {
timing: 1000,
data: "",
};
const barcodeReaded = () => {
if (barcode.data.length > 1) {
setBarcodeRead(barcode.data);
} else {
barcode.data = "";
}
};
let timeout = setTimeout(barcodeReaded, 500);
useEffect(() => {
window.addEventListener("keypress", (e) => {
console.log(e.key);
console.log(e.timeStamp);
if (barcode.data.length === 0 || e.timeStamp - barcode.timing < 200) {
barcode.data += e.key;
barcode.timing = e.timeStamp;
clearTimeout(timeout);
timeout = setTimeout(barcodeReaded, 500);
} else {
barcode.data = "";
}
console.log(barcode);
});
}, []);
return (
<div className="App">
<div>Readed: {barcodeRead}</div>
</div>
);
}
export default App;
我正在开发订单扫描 Web 应用程序,我面临的挑战是,如果条形码匹配,我将在我的 react.js 应用程序中接收数据。我将使用条形码扫描仪设备,所以我可以使用这个 npm 包 https://www.npmjs.com/package/react-barcode-reader。如果是这样,如何在我的 React 应用程序中实现它?
我在网上搜索了答案。我在 react.js.
中找不到我的具体问题的任何内容我建议使用 React Barcode Scanner NPM 包。该站点上有一个简单的演示。您可以使用他们的条码扫描器组件:
<BarcodeReader
onError={handleError}
onScan={handleScan}
/>
您可以将该组件应用到您希望用户执行扫描的位置。您只需要制作一个 handleScan 和 handleError 函数。
示例:
const [scanData, setScanData] = useState()
const handleScan = (data) => {
setScanData(data)
}
const handleError = (err) => console.error(err)
数据将存储在 scanData 变量中。希望对您有所帮助。
条形码扫描仪只是一种输入设备。把它想象成一个键盘。 您可以通过任何 TextInputs 组件接收其输入。
如果您的条码扫描器被编程为以“\n”结束,那么 TextInput 也会触发 onSubmit 事件。
这是一个非常简单的 React 条形码读取示例,使用简单的 vanilla javascript:
这可以使用时间范围来检测条形码读数。您可以轻松地将其更改为结束代码(不需要超时)
import { useEffect, useState } from "react";
import "./App.css";
function App() {
const [barcodeRead, setBarcodeRead] = useState("");
const barcode = {
timing: 1000,
data: "",
};
const barcodeReaded = () => {
if (barcode.data.length > 1) {
setBarcodeRead(barcode.data);
} else {
barcode.data = "";
}
};
let timeout = setTimeout(barcodeReaded, 500);
useEffect(() => {
window.addEventListener("keypress", (e) => {
console.log(e.key);
console.log(e.timeStamp);
if (barcode.data.length === 0 || e.timeStamp - barcode.timing < 200) {
barcode.data += e.key;
barcode.timing = e.timeStamp;
clearTimeout(timeout);
timeout = setTimeout(barcodeReaded, 500);
} else {
barcode.data = "";
}
console.log(barcode);
});
}, []);
return (
<div className="App">
<div>Readed: {barcodeRead}</div>
</div>
);
}
export default App;