当前位置:首页 > React

react native如何扫码

2026-03-11 05:07:01React

React Native 扫码实现方法

在 React Native 中实现扫码功能可以通过第三方库完成,以下是几种常用方案:

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

安装依赖库:

npm install react-native-camera react-native-qrcode-scanner
# 或
yarn add 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}
      flashMode={RNCamera.Constants.FlashMode.auto}
      topContent={<Text>对准二维码进行扫描</Text>}
    />
  );
}

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

安装依赖库:

npm install react-native-vision-camera vision-camera-code-scanner
# 或
yarn add react-native-vision-camera vision-camera-code-scanner

示例代码:

react native如何扫码

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>需要相机权限</Text>;
  }

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

使用 react-native-barcode-mask

如需添加扫描框UI:

npm install react-native-barcode-mask

结合使用示例:

import BarcodeMask from 'react-native-barcode-mask';

<QRCodeScanner
  cameraStyle={styles.cameraContainer}
  onRead={onSuccess}
>
  <BarcodeMask width={300} height={300} />
</QRCodeScanner>

注意事项

  • iOS需要添加相机权限描述到Info.plist:

    react native如何扫码

    <key>NSCameraUsageDescription</key>
    <string>需要相机权限进行扫码</string>
  • Android需要在AndroidManifest.xml添加权限:

    <uses-permission android:name="android.permission.CAMERA" />
  • 部分库需要执行链接操作:

    npx react-native link react-native-camera
  • 新版本React Native可能需要手动配置权限处理

标签: reactnative
分享给朋友:

相关文章

react如何遍历

react如何遍历

遍历数组或对象的方法 在React中,遍历数组或对象通常用于渲染列表或动态生成内容。以下是几种常见的遍历方法: 使用map遍历数组map是遍历数组并返回新数组的高阶函数,适合渲染列表。…

如何构建react

如何构建react

构建 React 项目的步骤 安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过命令行验证: node -v npm -v 使用 Create React Ap…

react如何配置

react如何配置

配置React项目的基本步骤 安装Node.js和npm 确保系统已安装Node.js(包含npm)。可通过命令行检查版本: node -v npm -v 创建React项目 使用官方工具Creat…

react如何同步修改

react如何同步修改

同步修改状态的常见方法 在React中同步修改状态通常涉及使用useState或useReducer钩子,结合React的批处理机制确保状态更新的一致性。以下是几种典型场景的解决方案: 直接使用us…

小白如何搭建react

小白如何搭建react

安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过官网下载安装包(https://nodejs.org/),选择 LTS 版本。安装完成后,终端运行以下命令验证版…

react如何创建项目

react如何创建项目

使用 Create React App 创建项目 Create React App (CRA) 是官方推荐的 React 项目脚手架工具,适合快速初始化一个现代化的 React 项目。 安装 C…