当前位置:首页 > 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

示例代码:

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:

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

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

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

    react native如何扫码

标签: reactnative
分享给朋友:

相关文章

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 基础页面结构 在 s…

react如何debugger

react如何debugger

调试 React 应用的方法 使用浏览器开发者工具进行调试 React 开发者工具(React DevTools)是调试 React 应用的必备工具。安装 Chrome 或 Firefox 扩展后,可…

react如何引入echarts

react如何引入echarts

安装 ECharts 依赖 在 React 项目中安装 ECharts 核心库和 React 封装库: npm install echarts echarts-for-react 基础引入方式 创建…

react如何同步修改

react如何同步修改

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

react如何滚动scroll

react如何滚动scroll

React 实现滚动的方法 使用 useRef 和 scrollTo 方法 通过 useRef 获取 DOM 元素的引用,调用 scrollTo 方法实现滚动。 import React, { us…

如何设计react组件

如何设计react组件

设计 React 组件的核心原则 React 组件的设计需要遵循高内聚、低耦合的原则,确保组件功能独立且易于维护。组件的设计可以分为展示组件和容器组件两类,展示组件负责 UI 渲染,容器组件负责逻辑处…