2017-06-21 5 views
1

Ich brauche deine Hilfe! Mein Ziel ist es, den Stil meiner Schaltfläche zu ändern, nachdem ich darauf geklickt habe! Ich hörte von direct manipulation und ich beschloss, es zu versuchen. Jetzt weiß ich nicht warum, aber die onPress in meiner TouchableOpacity funktioniert nicht. Hier ist der Code:onPress in TouchableOpacity löst nicht aus

<TouchableOpacity onPress={() => this.changeStyle}> 
    <TouchableHighlight style={styles.answer} ref="answer1"> 
     <Text ...> Some Text </Text> 
    </TouchableHighlight> 
</TouchableOpacity> 

Und hier ist meine changeStyle Funktion:

changeStyle() { 
    this.refs['answer1'].setNativeProps({ 
     style: { backgroundColor: "#13a88a"} 
    }); 
} 

Nun ich weiß nicht, warum, aber die 'onPress' wird nie ausgelöst. Vielen Dank für Ihre Antworten!

+0

Fügen Sie dem 'TouchableHighlight' eine' onPress' hinzu und geben Sie etwas aus, um zu testen, ob das Ereignis angenommen wird. Ich vermute, es wird reichen. – G0dsquad

+0

@ G0dsquad habe ich schon gemacht, das onPress in TouchableHighlight funktioniert. Das Problem ist, dass ich die Funktion changeStyle nicht darin nennen kann, weil es das TouchableHighlight ist, das ich den Stil ändern möchte. Und setNativeProps funktioniert nur mit dem Kind des Containers (hier ist TouchableOpacity der Container und TouchableHighlight das Kind). –

+1

können Sie bitte versuchen, indem Sie '()' zu 'this.changeStyle' hinzufügen –

Antwort

4

Wenn Sie die Funktion ausführen wollen, das von ‚this.changeStyle` mit, schreiben Sie Ihre onPress wie so:

<TouchableOpacity onPress={this.changeStyle}/>

Wenn Sie eine Funktion innerhalb der onPress prop passieren gehen, die this.changeStyle ausführt schreiben Sie Ihre onPress wie so:

<TouchableOpacity onPress={() => this.changeStyle()}/>

PS: Warum Sie <TouchableHighlight/> in einem <TouchableOpacity/> haben Sie? Verwenden Sie einfach einen und fügen Sie die onPress-Props hinzu.

+0

Vielen Dank! Warum ich "TouchableHighlight" in "TouchableOpacity" verwende, liegt daran, dass ich in der Dokumentation gesehen habe, dass 'setNativeProps' verwendet wird, um die Requisiten des Kindes zu aktualisieren. Und ich möchte den Stil des Buttons ändern, in diesem Fall das "TouchableHighlight" und den "Text" darin. –

+0

Dann sehe ich keine Verwendung für die TouchableOpacity. Sie können OnPress TouchableHighlight hinzufügen und es wird auch funktionieren. Wenn es Ihr Problem gelöst hat, markieren Sie es bitte als gelöst. – Raymond

Verwandte Themen