使用平面列表中的选定项目更新状态
update state with selected item in flatlist
我有一组图像,可以使用 flatlist 显示这些图像。我想要一个功能,当你点击一张图片时,它应该显示在一个单独的视图中。
下面是我的代码片段:
const [selectedImage, setSelectedImage] = useState(joy);
const [imageSet, setImageSet] = useState([joy,anger,concern,depression]);
return (
<SafeAreaView>
<View style={{width: 100, height: 400}}>
<Image style={{height: 50, width: 50}} source={selectedImage} />
</View>
<FlatList
horizontal={true}
showsHorizontalScrollIndicator={false}
data={imageSet}
renderItem={({item, index}) => (
<View>
<TouchableOpacity
onPress={(item) => {
setSelectedImage(item); // trying to select the image here
}}>
<Image
source={item}
key={index}
style={{
width: 60,
height: 60,
resizeMode: 'contain',
}}
/>
</TouchableOpacity>
</View>
)}
/>
</SafeAreaView>
);
但是点击它时没有显示图像。我无法弄清楚问题是什么。请帮忙。
我在您的代码中看到的问题是,您正在将项目从未定义的 TouchableOpacity onPress 传递给 setSelectedImage。这就是图像未设置到您的状态的原因。
试试这个:
之前:
<TouchableOpacity
onPress={(item) => { <--- Remove this item!!
setSelectedImage(item)}}>
之后:
<TouchableOpacity
onPress={() => {
setSelectedImage(item)}}>
我有一组图像,可以使用 flatlist 显示这些图像。我想要一个功能,当你点击一张图片时,它应该显示在一个单独的视图中。
下面是我的代码片段:
const [selectedImage, setSelectedImage] = useState(joy);
const [imageSet, setImageSet] = useState([joy,anger,concern,depression]);
return (
<SafeAreaView>
<View style={{width: 100, height: 400}}>
<Image style={{height: 50, width: 50}} source={selectedImage} />
</View>
<FlatList
horizontal={true}
showsHorizontalScrollIndicator={false}
data={imageSet}
renderItem={({item, index}) => (
<View>
<TouchableOpacity
onPress={(item) => {
setSelectedImage(item); // trying to select the image here
}}>
<Image
source={item}
key={index}
style={{
width: 60,
height: 60,
resizeMode: 'contain',
}}
/>
</TouchableOpacity>
</View>
)}
/>
</SafeAreaView>
);
但是点击它时没有显示图像。我无法弄清楚问题是什么。请帮忙。
我在您的代码中看到的问题是,您正在将项目从未定义的 TouchableOpacity onPress 传递给 setSelectedImage。这就是图像未设置到您的状态的原因。
试试这个:
之前:
<TouchableOpacity
onPress={(item) => { <--- Remove this item!!
setSelectedImage(item)}}>
之后:
<TouchableOpacity
onPress={() => {
setSelectedImage(item)}}>