Html5-qrcodeを使用し、バーコードスキャンを作成中です。
スキャンしたバーコードの商品ページに遷移させることを目標にしております。
スキャンしたバーコードを000-000の形に加工(正しく加工出来ているのは確認済み)し、商品ページに遷移させたいのですが上手くいきません。
ここが問題点?
router.push(${ROUTES.PRODUCT}/${result}
);
URLには[.....PRODUCT/[object 20object]と表示されてしまいます。
どなたかお知恵をお借りできないでしょうか。
宜しくお願い致します。
typescript
1import { Html5QrcodeScanner } from "html5-qrcode"; 2import { Html5QrcodeError, Html5QrcodeResult } from "html5-qrcode/esm/core"; 3import { useCallback, useEffect, useMemo, useRef, useState } from "react"; 4import { ROUTES } from '@utils/routes'; 5import { useRouter } from 'next/router'; 6 7export const BarcodeScanner = () => { 8 const barcodeScannerContainer = useRef<HTMLDivElement | undefined>(undefined); 9 const barcodeScanner = useRef<Html5QrcodeScanner | undefined>(undefined); 10 11 const [result, setResult] = useState<string>(); 12 const router = useRouter(); 13 14 function navigateToProductPage() { 15 router.push(`${ROUTES.PRODUCT}/${result}`); 16 } 17 18 console.log("barcodeScannerContainer", barcodeScannerContainer.current); 19 20 const onScanSuccess = useCallback( 21 (decodedText: string, result: Html5QrcodeResult) => { 22 setResult(decodedText.substring( 0, 3 )+'-'+decodedText.substring( 3, 6 ) ); 23 router.push(`${ROUTES.PRODUCT}/${result}`); 24 }, 25 [] 26 ); 27 const onScanerror = (errorMessage: string, error: Html5QrcodeError) => {}; 28 29 useEffect(() => { 30 barcodeScanner.current = new Html5QrcodeScanner( 31 "qr-reader", 32 { 33 supportedScanTypes:[], 34 fps:10, 35 qrbox: {width: 250, height: 150} 36 }, 37 true 38 ); 39 barcodeScanner.current.render(onScanSuccess, onScanerror); 40 }, [barcodeScannerContainer.current]); 41 42 return ( 43 <div> 44 <div>{result || "Nothing here"}</div> 45 {/*<div id={"qr-reader"} ref={barcodeScannerContainer}>*/} 46 <div id={"qr-reader"} > 47 Barcode Scanner 48 </div> 49 </div> 50 ); 51}; 52

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/07/11 05:37