Здравствуйте, я новичок в реагировании на родной, и я просто строю свой первый реагирующий проект с камерой без выставки.Я установил его с npm install react-native-camera
, а затем связал с react-native link react-native-camera
.Камера работает успешно, но когда я нажал кнопку привязки, она получила ошибку, подобную этой ...
{[TypeError: camera.takePictureAsync не является функцией.(В 'camera.takePictureAsync (параметры)' 'camera.takePictureAsync' не определено)] │ строка: 131480, │ столбец: 72, └ sourceURL: 'http://localhost:8081/index.bundle?platform=android&dev=true&minify=false'}
Вот мой код выглядит так ...
import React, { useRef } from 'react'
import { View, Text, StyleSheet, TouchableOpacity } from 'react-native'
import { RNCamera } from 'react-native-camera'
function PlayWithCamera() {
const camera = useRef(null)
const takePicture = async () => {
try {
const options = { quality: 0.5, base64: true };
const data = await camera.takePictureAsync(options);
console.log(data.uri, '<<<<<<<<<<<<<<<<<<<<<');
} catch (error) {
console.log(error, "ERROR <<<<<<<<<<<<<")
}
};
return (
<View style={styles.container}>
<RNCamera
ref={camera}
style={styles.preview}
type={RNCamera.Constants.Type.back}
flashMode={RNCamera.Constants.FlashMode.on}
androidCameraPermissionOptions={{
title: 'Permission to use camera',
message: 'We need your permission to use your camera',
buttonPositive: 'Ok',
buttonNegative: 'Cancel'
}}
androidRecordAudioPermissionOptions={{
title: 'Permission to use audio recording',
message: 'We need your permission to use your audio',
buttonPositive: 'Ok',
buttonNegative: 'Cancel',
}}
onGoogleVisionBarcodesDetected={({ barcodes }) => {
console.log(barcodes)
}}
/>
<View style={{ flex: 1, width: '100%', flexDirection: 'row', justifyContent: 'center', position: 'absolute', bottom: 0 }}>
<TouchableOpacity style={styles.capture} onPress={takePicture}>
<Text style={{ fontSize: 14 }}> SNAP </Text>
</TouchableOpacity>
</View>
</View>
)
}
const styles = StyleSheet.create({
container: {
flex: 1,
flexDirection: 'column',
backgroundColor: 'black',
},
preview: {
flex: 1,
justifyContent: 'flex-end',
alignItems: 'center',
},
capture: {
flex: 0,
backgroundColor: '#fff',
borderRadius: 5,
padding: 15,
paddingHorizontal: 20,
alignSelf: 'center',
margin: 20,
},
})
export default PlayWithCamera
ОБНОВЛЕНИЕ (18.48): я попытался использовать компонент класса, как в react-native-camera
документации, и он наконец заработал.Но мне все еще интересно, как заставить это работать в компоненте функции?