Прежде всего, синтаксис, который вы используете <Image source={this.state.index} style={styles.image}/>
, это НЕПРАВИЛЬНО
должно быть как <Image source={{uri : this.state.pickedImage}} style={styles.image}/>
в вашем штате изначально есть 3 значения
state = {
photos: [],
index: null,
pickedImage: null
}
при нажатии кнопки <TouchableHighlight/>
вы сохраняете индекс изображения, которое щелкнули, в состояние и передаете этот индекс в компоненте Image. Этого недостаточно для отображения изображения
Решение
сначала вы должны сохранить изображение, которое вы щелкнули, чтобы заявить, выполнив
onPress={() => this. setState({pickedImage: photos.node.image.uri})}
консольный журнал this.state.pickedImage
даст вам URI к изображению
и передать этот URI компоненту Image
<Image source={{uri : this.state.pickedImage}} style={styles.image}/>
Окончательный код выглядит как
<ScrollView contentContainerStyle={styles.scrollView} showsVerticalScrollIndicator={false}>
{this.state.photos.map((photos, index) => {
return(
<TouchableHighlight
style={{opacity: index === this.state.index ? .5 : 1}}
onPress={() => this. setState({pickedImage: photos.node.image.uri})}
key={index}
underlayColor='transparent'
>
<Image
style={{width: width / 3, height: width /3}}
source={{uri: photos.node.image.uri}}
resizeMode='cover'
/>
</TouchableHighlight>
);
})}
</ScrollView>
<Image source={{uri : this.state.pickedImage}} style={styles.image}/>