如何使用onPress函数获取带照片的证件?

时间:2019-06-30 13:45:06

标签: android react-native react-native-android

我需要在新屏幕或模式窗口中打开触摸的照片,但是我什至无法通过onPress函数获得它的ID。从unsplash.com解析的照片。

我尝试用<TouchableWithoutFeedback>包装我的视图,并使用onPress{}来接收被按下的照片ID。

getPhoto功能:

_getPhoto = () => {
    alert(this.state.item.id);
}

主视图:

<TouchableWithoutFeedback onPress={this._getPhoto}>
   <View style={styles.MainContainer}>

       <FlatList
            data={ this.state.dataSource }
            numColumns={2}
            ItemSeparatorComponent = {this.FlatListItemSeparator}
            renderItem={({item}) =>
                <View style={{flex:1, flexDirection: 'column'}}>
                  <Image source = {{ uri: item.urls.raw }} style={styles.imageView} />
                </View>

              }
            keyExtractor={(item, index) => index.toString()}
            extraData={this.state}
        />

   </View>
</TouchableWithoutFeedback>

我除了至少要从json接收到带照片的身份证之外,但大多数情况下,我都会收到“未定义不是对象”之类的错误。

我解决了这个问题:

renderItem={({item}) =>
            <TouchableWithoutFeedback onPress = {this._getPhoto.bind(item.id)}>
                <View style={{flex:1, flexDirection: 'column'}}>
                      <Image source = {{ uri: item.urls.raw }} style={styles.imageView} />
                </View>
            </TouchableWithoutFeedback>
              }

但现在onPress可在应用启动时使用。

1 个答案:

答案 0 :(得分:0)

答案是绑定。我绑定item.id以获取功能:


    renderItem={({item}) =>
            <TouchableWithoutFeedback onPress = {this._getPhoto.bind(item.id)}>
                <View style={{flex:1, flexDirection: 'column'}}>
                      <Image source = {{ uri: item.urls.raw }} style={styles.imageView} 
                </View>
            </TouchableWithoutFeedback>
              }

并将_getPhoto的内容更改为此:

    _getPhoto(){
    alert(this);
    }

所以它像它一样工作。