2016-12-20 13 views
0

親コンポーネント(例:TouchableOpacity)をクリックすると、私のユースケースがトリガーされますが、子コンポーネント(Screenなど)をクリックすると何もトリガーしません。私の場合はウェブ上のバブリングを防ぐのと同じです。私が読んだドキュメントからは、onStartShouldSetResponderCaptureを使用すべきだと言われましたが、私はまだ使い方について理解していません。以下はスニペットです。React子コンポーネント以外のネイティブトリガープレスイベント

<TouchableOpacity style={styles.container} onPress={() => alert('tes')} 
    > 
    <Screen style={styles.screenContainer} onStartShouldSetResponderCapture={() => false}> 
     <Title>Edit Nama Restoran</Title> 
     <Divider styleName='line' /> 

     <TextInput 
     style={{ flex: 1 }} 
     value={value} 
     onChangeText={value => this.setState({ value })} 
     onSubmitEditing={this.handleSubmit} 
     /> 

     <View styleName='horizontal' style={styles.nameContainer}> 
     <Button styleName='confirmation dark' onPress={this.handleSubmit}> 
      <Text>UPDATE</Text> 
     </Button> 
     <Button styleName='confirmation' onPress={onClose}> 
      <Text>CLOSE</Text> 
     </Button> 
     </View> 
    </Screen> 
    </TouchableOpacity> 

EDIT:以下

私の例を示す図です。

オーバレイ(<Screen>の外)をクリックすると、警告が表示されます(予想されます)。

白いダイアログ(<Screen>とその子どもたち)をクリックすると、警告(予期しない)が発生します。私が必要とするのは、<Screen>をクリックしたときに警告を発するものではありません。

<Modal 
    visible={this.state.modalVisible} 
    onRequestClose={() => {alert("Modal has been closed.")}} 
> 
    <TextInput 
    style={{ flex: 1 }} 
    value={value} 
    onChangeText={value => this.setState({ value })} 
    onSubmitEditing={this.handleSubmit} 
    /> 
</Modal> 

これはあなたのコードから右のスニペットであれば確かに、しかし、あなたがポップアップ表示したい基本的部分ではない、それを引っ張っ:モーダルで行う方法を示すように更新

Illustation

答えて

0

タッチ可能な不透明度から外に出て、周囲にモーダルをラップします。その後、クリックすると可視/不可視になります。

+0

お返事ありがとうございます。残念ながら、それは動作しませんでした。私の編集したポストを見てください:私は必要なものをカバーするためにGIFイラストを追加しました:) –

+0

ああ、私は今、私はモーダルでtextInputをラップし、子としてそれを削除し、ボタンクリックでvisibile /不可視にします。モーダルとして、その背後のビューを選択できるようにすべきではありません。 –

+0

あなたの投稿を編集してスニペットをそこに含めてもよろしいですか?スニペットは、あなたが意味することを理解するのに役立ちます。ボタンのクリック時に表示/非表示をトリガーする方法を理解しているため、詳細のスニペットは必要ありません。タグの構造については分かりません。ありがとう:) –

関連する問題