2017-12-17 1 views
0

Ich habe FlatList mit benutzerdefinierten Zeilenelement in einer TouchableOpacity wrappen. Ich hätte gerne mehrere onPress in der TouchableOpacity, so dass jede Kindansicht ihren respektierten Job bewältigen kann. Das Problem ist, dass beim Drücken der Kind-Ansicht der Job ausgeführt wird, aber auch das übergeordnete Element onPress wird ebenfalls ausgeführt. Wie kann man das stoppen?TouchableOpacity mit mehreren Kind mit onPress

<TouchableOpacity onPress={() => this.doSomething()}> 
    <Text>Some content</Text> 
    <Icon name="trash" size={20} onPress={this.onDeleteItem(item)}/> 
<TouchableOpacity> 

In einem anderen Wort, wie nur onDeleteItem, wenn der Benutzer Druck auf Papierkorb-Symbol auszuführen?

Jeder Vorschlag geschätzt, danke.

+0

Wickeln Sie sie nicht zusammen mit 'Touchables', wickeln Sie sie separat. – Val

Antwort

1

Verschieben Sie Ihre erste onPress auf den Text, oder wo immer ist passender als die äußerste Container.

<TouchableOpacity> 
    <Text onPress={() => this.doSomething()} >Some content</Text> 
    <Icon name="trash" size={20} onPress={this.onDeleteItem(item)}/> 
<TouchableOpacity> 

Theres keine Möglichkeit, ein Ereignis-Listener auf dem übergeordneten TouchableOpacity zu vermeiden, weil es alle Inhalte Verhüllung. Sie müssen einige Container/Inhalte (NativeBase) hinzufügen, um sie weiter zu modularisieren.

+0

Danke für die Vorschläge. Ich dachte, es gäbe eine Möglichkeit, Eltern wissen zu lassen, dass das Kind das Ereignis konsumiert hat, wie es bei Android und iOS der Fall ist. Gibt es dieses Muster überhaupt in reaktiv-nativ? –

+0

Ich weiß nicht genau, worauf Sie verweisen, daher kann ich nicht helfen. Der einzige andere Vorschlag wäre eine toggleVariable in Ihrem Zustand und dann eine Dreherei für die erste onPress ... onPress = {this.state.doFunctionToggle? this.doSomething(): undefiniert} –

Verwandte Themen