2017-09-27 4 views
0

Ich versuche, mit Reagieren-Navigation zu einem anderen Bildschirm zu navigieren. Aber mit diesem Code bekomme ich den Fehler: undefined is not an object (evaluation 'this.props.navigation')Kann nicht innerhalb einer anderen Methode navigieren

Wenn direkt navigate aufgerufen wird (siehe Beispiel unten) funktioniert es.

Was mache ich falsch?

arbeiten Dies gilt nicht:

_renderRow (rowData) { 
    return (
     <View > 
     <TouchableHighlight onPress={this._handlePress} underlayColor='white'> 
      <Image 
       style={{width: 50, height: 50}} 
       source={{uri: 'http://openweathermap.org/img/w/' + rowData.iconName + '.png'}} 
      /> 
     </TouchableHighlight> 
     </View> 
    ) 
    } 

    _handlePress() { 
    this.props.navigation.navigate('Details') 
    } 

Dies funktioniert:

_renderRow (rowData) { 
    return (
     <View > 
     <TouchableHighlight onPress={() => this.props.navigation.navigate('Details')} underlayColor='white'> 
      <Image 
       style={{width: 50, height: 50}} 
       source={{uri: 'http://openweathermap.org/img/w/' + rowData.iconName + '.png'}} 
      /> 
     </TouchableHighlight> 
     </View> 
    ) 
    } 
+1

'onPress = {this._handlePress.bind (this)}' – Gerardo

Antwort

1

Sie müssen den Kontext binden. onPress={this._handlePress.bind(this)} wird die Arbeit machen.

You have to be careful about the meaning of this in JSX callbacks. In JavaScript, class methods are not bound by default. If you forget to bind this.handleClick and pass it to onClick , this will be undefined when the function is actually called.

Hier ist die Dokumentation:

Handling events

Verwandte Themen