返回 React Native Vision Camera 时出现视图管理器错误

问题描述 投票:0回答:0

当用户点击一个按钮时,我将用户导航到新屏幕。在新屏幕中,使用 React Native 视觉相机打开相机。但是当我按下后退按钮时,显示“标签的视图管理器”错误而不是返回到上一个屏幕。

  const [hasPermission, setHasPermission] = useState(false);

  const [barcodes, setBc] = useState([]);
  const [isActive, setActive] = useState(true);

  const devices = useCameraDevices();
  const device = devices.back;

  const navigation = useNavigation();

  function scanBarcodes(frame, types, options) {
    'worklet';
    return __scanCodes(frame, types, options);
  }

  const frameProcessor = useFrameProcessor((frame) => {
    'worklet';
    const detectedBarcodes = scanBarcodes(frame, [BarcodeFormat.QR_CODE], { checkInverted: true });
    runOnJS(setBc)(detectedBarcodes);
  }, []);

  useEffect(() => {
    (async () => {
      let granted = await Permission.checkPermission(PERMISSION_TYPE.camera);
      if (!granted) {
        granted = await Permission.requestPermission(PERMISSION_TYPE.camera);
      }
      setHasPermission(granted);
    })();
  }, []);

  useEffect(() => {
    const unsubscribe = navigation.addListener('beforeRemove', () => {
      setHasPermission(false);
      setBc([]);
      setActive(false);
    });
    return unsubscribe;
  }, [navigation]);

  const onSuccess = (e) => {};

  if (device != null && hasPermission) {
    return (
      <>
        <Camera
          style={StyleSheet.absoluteFill}
          device={device}
          isActive={isActive}
          frameProcessor={frameProcessor}
          frameProcessorFps={5}
        />
        {barcodes.map((barcode, idx) => (
          <Text key={idx} style={styles.barcodeTextURL}>
            {barcode.displayValue}
          </Text>
        ))}
      </>
    );
  } else {
    return (
      <View>
        <Text>Need Permission</Text>
      </View>
    );
  }
};

有什么建议为什么会这样吗?

使用 - “react-native-reanimated”:“2.3.0-alpha.3”, "react-native-vision-camera": "2.13.0", “视觉相机代码扫描仪”:“^0.2.0”

reactjs react-native android-camera react-native-reanimated-v2 react-native-vision-camera
© www.soinside.com 2019 - 2024. All rights reserved.