我需要在新屏幕或模式窗口中打开触摸的照片,但是我什至无法通过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可在应用启动时使用。
答案 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);
}
所以它像它一样工作。