Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript camera.takePictureAsync(选项)不是react native camera中的函数_Javascript_Android_React Native_React Native Camera - Fatal编程技术网

Javascript camera.takePictureAsync(选项)不是react native camera中的函数

Javascript camera.takePictureAsync(选项)不是react native camera中的函数,javascript,android,react-native,react-native-camera,Javascript,Android,React Native,React Native Camera,您好,我是react native的新用户,我刚刚用相机创建了我的第一个react native项目,没有世博会。 我使用npm install react native camera安装了它,然后将它链接到react native link react native camera。 相机运行成功,但当我触发快照按钮时,它出现了如下错误 {[TypeError:camera.takePictureAsync不是函数。(在“camera.takePictureAsync(选项)”中,“camera

您好,我是react native的新用户,我刚刚用相机创建了我的第一个react native项目,没有世博会。 我使用
npm install react native camera
安装了它,然后将它链接到
react native link react native camera
。 相机运行成功,但当我触发快照按钮时,它出现了如下错误

{[TypeError:camera.takePictureAsync不是函数。(在“camera.takePictureAsync(选项)”中,“camera.takePictureAsync”未定义)] │ 电话号码:131480, │ 栏目:72, └ 源URL:'}

这是我的代码看起来像

import React,{useRef}来自“React”
从“react native”导入{视图、文本、样式表、TouchableOpacity}
从“react native camera”导入{RNCamera}
函数PlayWithCamera(){
const-camera=useRef(空)
const takePicture=async()=>{
试一试{
const options={quality:0.5,base64:true};
const data=wait camera.takePictureAsync(选项);

log(data.uri,我也遇到了同样的问题。解决方案是返回到类组件而不是函数组件

<Camera
   ref={ref => (this.cameraEl = ref)}
   style={{ flex: 1 }}
   type={Camera.Constants.Type.front}
/>
(this.cameraEl=ref)}
style={{flex:1}}
类型={Camera.Constants.type.front}
/>

我让react本机摄像头与功能组件一起运行。以下是:

function CameraComponent(props){
  let camera;
  async function takePicture(){
    if( camera ) {
      const options = {quality: 0.5};
      const data = await camera.takePictureAsync(options);
      console.log(data.uri);
    }
  }

  return(
    <View>
      <RNCamera
        ref={ref => (camera = ref)}
       />
     </View>
  );
}
功能摄像机组件(道具){
让相机;
异步函数takePicture(){
如果(照相机){
const options={quality:0.5};
const data=wait camera.takePictureAsync(选项);
log(data.uri);
}
}
返回(
(摄像机=ref)}
/>
);
}

您应该使用
camera.current.takePictureAsync(选项);
而不是
camera.takePictureAsync(选项);
const-cameraEl=useRef(null);
异步函数takePicture(){
console.log('takePicture');
if(摄像机当前){
const options={quality:0.5,base64:true};
const data=wait cameraEl.current.takePictureAsync(选项);
log(data.uri);
}
}
{
//this.camera=ref;
// }}
ref={cameraEl}

hi功能组件中的正确方式应为

const ref=React.createRef();
const takePicture=async()=>{
如果(参考电流){
const options={quality:0.5,base64:true};
const data=wait ref.current.takePictureAsync(选项);
log(data.uri);
}
};
返回(
{
控制台日志(条形码);
}}
/>
断裂
);

你能解释一下
const-camera=useRef(null)
的作用吗。这将如何使
camera
任何具有
takePictureAsync
等属性的东西成为可能
const-camera=useRef(RNCamera)
?我尝试将其更改为
const-camera=useRef(RNCamera)
但仍然不能工作相同的错误?或者其他什么,我只是再次读取错误…
在“camera.takePictureAsync(选项)”中,“camera.takePictureAsync”未定义)
这很奇怪,是的,它仍然得到相同的错误:/。
  const cameraEl = useRef(null);
  async function takePicture() {
    console.log('takePicture');
    if (cameraEl.current) {
      const options = { quality: 0.5, base64: true };
      const data = await cameraEl.current.takePictureAsync(options);
      console.log(data.uri);
    }
  }

    <RNCamera
      // ref={ref => {
      //   this.camera = ref;
      // }}
      ref={cameraEl}