2017-12-22 7 views
0

네이티브 반응 반응 - 기본 카메라를 화면으로 이동합니다.카메라, 상태 전이 문제는 다음 touchableopacity onPress에에, 내가 asyncstorage 항목을 저장하기 위해 노력했습니다

문제 : 카메라 화면에 아무 것도 나타나지 않습니다. 다음과 같은 오류가 발생했습니다 : 경고 : 기존 상태 전환 (예 : '렌더링'또는 다른 구성 요소의 생성자) 중에 업데이트 할 수 없습니다. 렌더링 방법은 소품과 국가의 순수한 기능이어야합니다. 생성자 부작용은 anti-pattern이지만 'componentWillMount'로 이동할 수 있습니다. (add 매개 클래스에서) 라인 27, 36 및 41 다음

경고 포인트 코드이다

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; 

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; 

설명이 도움이 될 것입니다. 미리 감사드립니다. 당신의 add 매개에

답변

1

파일이 변경 시도 :

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

사람 :

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

이 근무! 감사! – MacFlyer

관련 문제