react-qrcode-scan
Version:
React componnent write by typescript for scan qrcode base on instascan.js
76 lines (54 loc) • 3.07 kB
Markdown
React componnent write by typescript for scan qrcode. Base on instascan.js
```
yarn add react-qrcode-scan
// or
npm install react-qrcode-scan --save
```
```
import { QRScaner, Camera } from "react-qrcode-scan";
export default class QRReader extends React.Component<RenderProps, RenderState> {
...
render() {
const { results, camera } = this.state;
return (
<Camera onError={this.onError}>
{ cameras => cameras.length > 0 ?
<QRScaner onStart={this.onStart} onScan={this.onScan} camera={cameras[0]} onError={this.onError} />
: <div> No Camera</div>}
</Camera>
);
}
}
```
> You can get full example code [Here](./example/scan.tsx)
> Or See [Live example](https://189.github.io/react-qrcode-scan/dist/index.html)
react-qrcode-scan exports two component:
`<Camera/>` will fetch for the available cameras on your device, and return the camera device list;
Scanner Properties
| name | type | required | description |
|-------------------|-------------------|------------|---------------------------------------------------|
| camera | object | true | Camera object returned by \<Camera \/\> |
| onError | (err:Error) => volid | true | Emitted when scan got error
| onScan | (content:string) => volid | true | Emitted when a QR code is scanned using the camera in continuous mode |
| stop | boolean | false | If stop is true the camera stops and vice-versa |
| onStart | (camera) => volid | false | Called when camera is active and scanning has started |
| onStop | () => volid | false | Called when camera and scanning have stopped |
| onActive | function | false | Emitted when the scanner becomes active as the result of stop becoming false or the tab gaining focus |
| onInactive | () => volid | false | Emitted when the scanner becomes inactive as the result of stop becoming true or the tab losing focus |
| className | string | false | classname, will be used for descript video tag |
| options | object | false | Same options from [Instascan.Scanner][scanoption] |
| style | React.cssProperty | false | inline styles, will be pass to video tag |
| videoAttr | React.VideoHTMLAttributes<any> | false | video tag attribute
[]: https://github.com/schmich/instascan#let-scanner--new-instascanscanneropts
For more details check the [Instascan API](https://github.com/schmich/instascan#api)
```
$ git clone repo
$ yarn run start
$ open http://localhost:8898
```