import { useState, useRef, useEffect } from 'react'; import { BrowserMultiFormatReader } from '@zxing/browser'; function BarcodeScanner({ onScan }) { const videoRef = useRef(null); const [scanning, setScanning] = useState(false); useEffect(() => { let reader; if (scanning) { reader = new BrowserMultiFormatReader(); reader.decodeFromVideoDevice( undefined, videoRef.current, (result, error) => { if (result) { onScan(result.getText()); setScanning(false); } } ); } return () => { if (reader) { reader.reset(); } }; }, [scanning]); return (
{scanning ? (
); }