2017-12-17 12 views
0

TouchableOpacityの中にカスタムの行アイテムラッパーを持つFlatListがあります。 TouchableOpacity内に複数のonPressを配置して、それぞれの子ビューが尊重された仕事を処理できるようにしたいと思います。問題は、子ビューを押してもそれは仕事だが、親のonPressも実行されるということです。それをやめる方法は?ごみ箱アイコンの上にのみonDeleteItemユーザープレスを実行するための方法を別の言葉でonPressで複数の子を持つTouchableOpacity

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

ありがとう、ありがとうございます。

+0

「Touchables」と一緒にラップしないでください。別々にラップしてください。 – Val

答えて

1

最初のonPressをTextに移動するか、最も外側のコンテナよりも適切な場所に移動します。

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

Theresのそれはすべてのコンテンツを包んだので、親TouchableOpacityのイベントリスナーを回避するための方法はありません。より多くのモジュール/コンテンツ(NativeBase)を追加する必要があります。

+0

提案していただきありがとうございます。私はアンドロイドとiOSでネイティブにできるように、子供がイベントを消費したことを親に知らせる方法があると思いました。そのパターンは反応ネイティブではまったく存在しますか? –

+0

あなたが何を参照しているのか分かりませんので、私は助けません。唯一の他の提案は、あなたの州のtoggleVariableを持っているだろうし、最初のonPressのために旋盤を使ってください... onPress = {this.state.doFunctionToggle? this.doSomething():undefined} –

関連する問題