Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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
React native 摄像头不显示、状态转换问题、反应本机_React Native_Camera_State - Fatal编程技术网

React native 摄像头不显示、状态转换问题、反应本机

React native 摄像头不显示、状态转换问题、反应本机,react-native,camera,state,React Native,Camera,State,我一直在尝试在touchableopacity onPress上保存一个异步存储项,然后导航到react本机相机屏幕 问题是:相机屏幕变得空白。我遇到以下错误:警告:无法在现有状态转换期间更新(例如在“render”或其他组件的构造函数中)。渲染方法应该是道具和状态的纯函数;构造函数的副作用是反模式的,但可以移动到“componentWillMount” 第27、36和41行的警告点(在AddParameters类) 代码如下: AddParameters.js import React, {

我一直在尝试在touchableopacity onPress上保存一个异步存储项,然后导航到react本机相机屏幕

问题是:相机屏幕变得空白。我遇到以下错误:警告:无法在现有状态转换期间更新(例如在“render”或其他组件的构造函数中)。渲染方法应该是道具和状态的纯函数;构造函数的副作用是反模式的,但可以移动到“componentWillMount”

第27、36和41行的警告点(在AddParameters类)

代码如下:

AddParameters.js

import React, { Component } from 'react';

import {
  Text,
  AsyncStorage,
  View,
  TouchableOpacity,
} from 'react-native';

class AddParameters extends Component {
  constructor() {
    super()
    this.state = {
      localIds: [
        "data1",
        "data2",
        "data3",
        "data4",
        "data5",
        "data6"
      ],
    }
  }

  renderScreen = () => {
      return (
            <TouchableOpacity onPress={this._AddParameter(this.state.localIds[0])}>
              <Text>Click Me</Text>
            </TouchableOpacity>
      );
  }

  _AddParameter = (ParameterId) => {
    const { navigate } = this.props.navigation;
    AsyncStorage.setItem("myparam", ParameterId);
    navigate("CameraScreen");
  }

  render() {
    return (
      this.renderScreen()
    );
  }
}



export default AddParameters;
import React,{Component}来自'React';
进口{
文本
异步存储,
看法
可触摸不透明度,
}从“反应本机”;
类AddParameters扩展组件{
构造函数(){
超级()
此.state={
地方:[
“数据1”,
“数据2”,
“数据3”,
“数据4”,
“数据5”,
“数据6”
],
}
}
渲染屏幕=()=>{
返回(
点击我
);
}
_AddParameter=(ParameterId)=>{
const{navigate}=this.props.navigation;
AsyncStorage.setItem(“myparam”,ParameterId);
导航(“摄像机屏幕”);
}
render(){
返回(
这个文件名为renderScreen()
);
}
}
导出默认参数;
CameraScreen.js

'use strict';
import React, { Component } from 'react';
import {
  AppRegistry,
  Dimensions,
  StyleSheet,
  Text,
  View,
  Image,
  AsyncStorage,
} from 'react-native';
import Camera from 'react-native-camera';

class CameraScreen extends Component {

  constructor(props) {
    super(props);
    this.state = {
      mystate: '',
    };
  }

  renderCamera = () => {
    return (
      <Camera
        ref={(cam) => {
          this.camera = cam;
        }}
        style={stylesCamera.container}
        aspect={Camera.constants.Aspect.fill}>
      </Camera>
    );
  }

  render() {
    return (
      this.renderCamera()
    );
  }
}

const stylesCamera = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
    backgroundColor: "transparent",
  },
});

export default CameraScreen;
“严格使用”;
从“React”导入React,{Component};
进口{
评估学,
尺寸,
样式表,
文本
看法
形象
异步存储,
}从“反应本机”;
从“react native Camera”导入相机;
类CameraScreen扩展组件{
建造师(道具){
超级(道具);
此.state={
我的国家:'',
};
}
renderCamera=()=>{
返回(
{
这个摄像头=凸轮;
}}
style={stylesCamera.container}
aspect={Camera.constants.aspect.fill}>
);
}
render(){
返回(
这个是renderCamera()
);
}
}
const stylesCamera=StyleSheet.create({
容器:{
弹性:1,
辩护内容:“中心”,
对齐项目:“中心”,
背景色:“透明”,
},
});
导出默认摄像机屏幕;

任何解释都会有帮助。提前感谢。

在您的AddParameters文件中,尝试更改以下内容:

<TouchableOpacity onPress={this._AddParameter(this.state.localIds[0])}>

致:

this.\u AddParameter(this.state.localIds[0])}>

成功了!谢谢
<TouchableOpacity onPress={() => this._AddParameter(this.state.localIds[0])}>