当前位置:首页 > React

react native如何扫码

2026-01-24 20:20:20React

React Native 扫码实现方法

在 React Native 中实现扫码功能通常需要借助第三方库,以下是几种常用的方法:

使用 react-native-camera 和 react-native-qrcode-scanner

安装依赖库:

npm install react-native-camera react-native-qrcode-scanner

基础扫码组件实现:

import QRCodeScanner from 'react-native-qrcode-scanner';

function ScanScreen() {
  const onSuccess = (e) => {
    console.log('Scanned data:', e.data);
    // 处理扫描结果
  };

  return (
    <QRCodeScanner
      onRead={onSuccess}
      showMarker={true}
      reactivate={true}
      reactivateTimeout={5000}
    />
  );
}

使用 react-native-vision-camera 和 vision-camera-code-scanner

安装依赖库:

npm install react-native-vision-camera vision-camera-code-scanner

实现代码:

import {useScanBarcodes, BarcodeFormat} from 'vision-camera-code-scanner';

function ScanScreen() {
  const [hasPermission, setHasPermission] = useState(false);
  const [scannedData, setScannedData] = useState('');

  const [frameProcessor, barcodes] = useScanBarcodes([BarcodeFormat.QR_CODE]);

  useEffect(() => {
    (async () => {
      const status = await Camera.requestCameraPermission();
      setHasPermission(status === 'authorized');
    })();
  }, []);

  useEffect(() => {
    if (barcodes.length > 0) {
      setScannedData(barcodes[0].displayValue);
    }
  }, [barcodes]);

  if (!hasPermission) {
    return <Text>No camera permission</Text>;
  }

  return (
    <Camera
      style={StyleSheet.absoluteFill}
      device={device}
      isActive={true}
      frameProcessor={frameProcessor}
    />
  );
}

使用 react-native-barcode-mask

安装依赖库:

npm install react-native-barcode-mask

结合使用示例:

import {RNCamera} from 'react-native-camera';
import BarcodeMask from 'react-native-barcode-mask';

function ScanScreen() {
  const onBarCodeRead = (result) => {
    console.log('Barcode data:', result.data);
  };

  return (
    <RNCamera
      style={styles.preview}
      onBarCodeRead={onBarCodeRead}
      captureAudio={false}>
      <BarcodeMask width={300} height={100} />
    </RNCamera>
  );
}

注意事项

确保在 Android 的 AndroidManifest.xml 中添加相机权限:

<uses-permission android:name="android.permission.CAMERA" />

对于 iOS,需要在 Info.plist 中添加相机使用描述:

<key>NSCameraUsageDescription</key>
<string>需要相机权限来进行扫码</string>

各库的性能特点:

react native如何扫码

  • react-native-camera 兼容性好但体积较大
  • react-native-vision-camera 性能更优但需要 RN 0.63+
  • 简单场景可使用 react-native-qrcode-scanner 快速集成

以上方法可根据项目需求选择适合的方案实现扫码功能。

标签: reactnative
分享给朋友:

相关文章

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 编写组件代码 在 s…

react如何更新

react如何更新

更新 React 版本的方法 检查当前 React 版本 运行以下命令查看项目中安装的 React 版本: npm list react 更新 React 及相关依赖 通过 npm 或 yarn…

如何下载react

如何下载react

下载 React 的方法 通过 npm 或 yarn 安装 React 可以通过包管理器 npm 或 yarn 安装。确保已安装 Node.js(包含 npm),然后在项目目录中运行以下命令:…

react如何部署

react如何部署

部署 React 应用的常见方法 使用静态服务器部署 React 应用在构建后会生成静态文件,可以直接通过静态服务器部署。常用的静态服务器包括 Nginx、Apache 等。 运行构建命令生成静态文…

react如何拓展

react如何拓展

React 拓展方法 使用高阶组件(HOC) 高阶组件是一种复用组件逻辑的方式,通过接收一个组件并返回一个新组件实现功能拓展。例如,为组件添加日志功能: function withLogging…

如何用react

如何用react

使用React的基本步骤 安装Node.js和npm 确保系统已安装Node.js和npm。Node.js自带npm,可从官网下载安装包。安装完成后,通过命令行验证版本: node -v npm -…