2016-10-22 2 views
0

Wenn ich versuche, den Status in touchablehighlight Onpress zu setzen, stürzt meine App ab. Das ist, was ich habe:Kann nicht in touchablehighlight setup onpress

<TouchableHighlight onPress={this.setState({toggleCharacter: false})}> 
    <Image style={styles.tekstballon} source={tekstballon} /> 
</TouchableHighlight> 

Mein Ziel ist toggleCharacter so zu wechseln, wenn es falsch ist, ich es auf true gesetzt werden soll und wenn es wahr ist, will ich es falsch gesetzt, aber ich bin nicht sicher, wie man .

Antwort

4

Sie rufen diesen setState-Aufruf sofort beim Rendern auf. Sie müssen es in einer Funktion wickeln, die stattdessen auf onPress genannt werden, das heißt:

<TouchableHighlight onPress={() => this.setState({toggleCharacter: false})}> 

Denken Sie daran, die oben etwas verpönt wie es eine neue Funktion für jede Instanz zu schaffen, sondern es ist nur gemeint geben Sie eine Vorstellung davon, warum Sie Ihren Fehler bekommen (ein bisschen mehr Leistung, um es der Klasse selbst hinzuzufügen.)

Bearbeitet, um den Kommentar zu beantworten. Der "bessere" Weg, es oben zu tun wäre:

class myComponent extends React.Component { 

    /* 
    ...ctor and methods above 
    The below assumes Property initializer syntax is available. 
    If not, you need to autobind in the constructor 
    /* 
    handleOnPress =() => this.setState({ toggleCharacter: false }) 

    render() { 
    return (
     <TouchableHighlight onPress={this.handleOnPress}> 
     <Image style={styles.tekstballon} source={tekstballon} /> 
     </TouchableHighlight> 
    ); 
    } 
} 
+0

Vielen Dank das funktioniert, aber ich verstehe nicht, wie genau ich es besser machen könnte. Soll ich außerhalb des Renderings eine Funktion erstellen und diese in der onPress aufrufen? –

+0

Siehe Kommentar oben, aber im Wesentlichen ja, Sie werden es einfach zu einer Methode für die Klasse selbst machen. –

+0

Vielen Dank funktioniert wie ein Charme! –

Verwandte Themen