当用户点击一个按钮时,我将用户导航到新屏幕。在新屏幕中,使用 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”