2017-10-13 3 views
2

Je viens de commencer à apprendre React Native et j'ai couru ceci: J'ai créé un composant qui a un TouchableHighlight dedans, et j'ai assigné une fonction de gestionnaire, mais il ne semble pas ça s'appelle. Voici mon élément:Le gestionnaire tactile n'est pas appelé avec React Native

import React, {Component} from 'react'; 
import { 
    Text, 
    View, 
    TouchableHighlight 
} from 'react-native'; 

export default class Component1 extends Component<{}> { 
    componentWillMount() { 
     console.log("hi there"); 
     this.setState({age: 22}); 
    } 

    handlePress() { 
     this.setState(prevState => ({ age: prevState.age + 1 })); 
     console.log("updated age"); 
    } 

    render() { 
     return (
      <View> 
       <View> 
        <Text> 
         {this.props.name} 
         {"\n"} 
         {this.state.age} 
        </Text> 
       </View> 
       <View> 
        <TouchableHighlight onPress={() => this.handlePress}> 
         <View> 
          <Text>Become older</Text> 
         </View> 
        </TouchableHighlight> 
       </View> 
      </View> 
     ); 
    } 
} 

Quand je tape le « devenir plus » rien de vue est connecté à la borne (j'utilise react-native log-android

Merci pour aider à :)

Répondre

2

A l'intérieur du onPress, il devrait être une fonction. Vous utilisez la fonction de flèche, vous devez appeler la fonction handlePress:

Cette partie:

<TouchableHighlight onPress={() => this.handlePress}> 

devrait être:

<TouchableHighlight onPress={() => this.handlePress()}> 

Mais si vous êtes juste d'appeler la fonction, de sorte que vous venez besoin de le transmettre comme:

<TouchableHighlight onPress={this.handlePress}> 
+0

Merci :)! J'ai essayé les deux options et seulement le premier travaillé ( this.handlePress()}>), aucune idée pourquoi cela pourrait être? Je suis assez sûr que j'ai vu l'autre syntaxe utilisée aussi –

+0

Il n'y a rien de mal avec la deuxième syntaxe, vous pouvez vérifier les docs, il a un exemple qui est le même que celui mentionné: https: //facebook.github .io/react-native/docs/touchablehighlight.html –

0

Vous. avoir une erreur de syntaxe.

<TouchableHighlight onPress={() => this.handlePress}> 

devrait être

<TouchableHighlight onPress={() => this.handlePress()}> 

ou

<TouchableHighlight onPress={this.handlePress}>