【发布时间】:2017-11-20 05:47:49
【问题描述】:
我正在尝试在 React Native 中制作一个图片库。
我目前拥有的是一个如下所示的网站: imageView
这些图像只有 9 个测试图像,它们需要在这样的数组中:
var imagesLoaded =
[
require('./image_1.jpg'),
require('./image_2.jpg'),
require('./image_3.jpg'),
require('./image_4.jpg'),
require('./image_5.jpg'),
require('./image_6.jpg'),
require('./image_7.jpg'),
require('./image_8.jpg'),
require('./image_9.jpg')
];
我现在想要做的是点击一张图片,这会导致打开一个新页面,而点击的图片单独位于黑色背景上。
这是画廊的代码:
class ImageView extends Component
{
static navigationOptions =
{
title: 'ImageView',
};
render()
{
const { navigate } = this.props.navigation;
var images = [];
for (var i = 0; i < 200; i++)
{
var imageString = 'Image #' + (i+1);
images.push(
<TouchableHighlight key={i} onPress={() => navigate('ImageTap', {imageSrc: imagesLoaded[i%9]})}>
<View style={styles.imageContainer}>
<Image source={imagesLoaded[i%9]} style={styles.images}/>
<Text style={styles.imageText}>{imageString}</Text>
</View>
</TouchableHighlight>
)
}
return (
<ScrollView>
<View style={{flex: 1, flexDirection: 'row', flexWrap: 'wrap', justifyContent: 'center'}}>
{images}
</View>
</ScrollView>
);
}
}
这是应该打开的新页面的代码:
class ImageTap extends Component
{
static navigationOptions =
{
title: 'ImageView',
};
render()
{
const { params } = this.props.navigation.state;
return (
<View style={{backgroundColor: 'black', flex: 1, flexDirection: 'row', justifyContent: 'center', alignItems: 'center'}}>
<Image source={params.imageSrc} style={{flex: 1}}/>
</View>
);
}
}
但是发生的情况是总是打开 foo 循环的最后一个图像。无论点击哪个图像。如果我将迭代器 i 作为参数提供给新页面并记录它,我总是得到 199。我做错了什么?
【问题讨论】:
标签: react-native