2017-02-19 17 views
-1

Я пытаюсь получить приложение React Native, настроенное после сообщения this, а затем перенесено на ES6. Вот основной код страницы:undefined не является объектом (оценка 'state.cameraType')

"use strict"; 
import React, { Component } from 'react'; 
import Camera from 'react-native-camera'; 
import { 
    AppRegistry, 
    StyleSheet, 
    Text, 
    View, 
    TextInput, 
    TouchableHighlight, 
} from 'react-native'; 

export default class AwesomeProject extends Component { 
    constructor(props) { 
    super(props); 
    this.state = {cameraType: Camera.constants.Type.back}; 
    } 

    render() { 
    return (
     <Camera 
     ref="cam" 
     style={styles.container} 
     type={this.state.cameraType}> 
     <View style={styles.buttonBar}> 
      <TouchableHighlight style={styles.button} onPress={this._switchCamera.bind(this)}> 
      <Text style={styles.buttonText}>Flip</Text> 
      </TouchableHighlight> 
      <TouchableHighlight style={styles.button} onPress={this._takePicture.bind(this)}> 
      <Text style={styles.buttonText}>Take</Text> 
      </TouchableHighlight> 
     </View> 
     </Camera> 
    ); 
    } 

    _switchCamera:() => { 
    var state = this.state; 
    console.log(this.state); 
    state.cameraType = state.cameraType === Camera.constants.Type.back ? Camera.constants.Type.front : Camera.constants.Type.back; 
    this.setState(state); 
    } 

    _takePicture:() => { 
    console.log(this.refs); 
    this.refs.cam.capture(function(err, data) { 
     console.log(err, data); 
    }); 
    } 

}; 

const styles = StyleSheet.create({ 
    container: { 
    flex: 1, 
    justifyContent: "center", 
    alignItems: "center", 
    backgroundColor: "transparent", 
    }, 
    buttonBar: { 
    flexDirection: "row", 
    position: "absolute", 
    bottom: 25, 
    right: 0, 
    left: 0, 
    justifyContent: "center" 
    }, 
    button: { 
    padding: 10, 
    color: "#FFFFFF", 
    borderWidth: 1, 
    borderColor: "#FFFFFF", 
    margin: 5 
    }, 
    buttonText: { 
    color: "#FFFFFF" 
    } 
}); 

AppRegistry.registerComponent('AwesomeProject',() => AwesomeProject); 

Я получаю странные ошибки, говоря как state.cameraType не определено и this.refs не определено. У меня есть подозрение, что что-то не связано, и мой this не указывает на правильную вещь, но я пробовал использовать обе функции стрелок и явно привязывать. См. Комментарий ниже. Во всяком случае, я не уверен, почему это действует, какие-то идеи?

Очень похоже на this post, за исключением того, что я попробовал оба предлагаемых решения, поэтому я чувствую, что что-то еще отсутствует, или я делаю привязку неправильно.

Редактировать: Есть ли причина, чтобы быть опущенной? Я что-то не понимаю: o

ответ

0

Оказалось, что ручное связывание - это способ пойти, просто нужно перезагрузить приложение. Я не включил горячую замену. Альтернативно, функции стрелок также должны работать.

Другое дело, что для iOS 10 и выше вам нужно будет установить 2 вещи в файле Info.plist, Privacy - Camera Usage Description и Privacy - Photo Library Usage. Это может быть любое строковое значение.

 Смежные вопросы

  • Нет связанных вопросов^_^