React native 我正在尝试使用按键提取器在平面列表中添加并突出显示所选项目

React native 我正在尝试使用按键提取器在平面列表中添加并突出显示所选项目,react-native,React Native,从“React”导入React,{useState}; 从“react native”导入{Image,FlatList,Dimensions,StyleSheet}; 从“反应本机快速图像”导入快速图像 const picsummages=新数组(28)。填充(“http://placeimg.com/640/360/any"); 让generateRandomNum=()=>Math.floor(Math.random()*1001) 函数renderItem({item}){ 返回( )

从“React”导入React,{useState}; 从“react native”导入{Image,FlatList,Dimensions,StyleSheet}; 从“反应本机快速图像”导入快速图像

const picsummages=新数组(28)。填充(“http://placeimg.com/640/360/any");

让generateRandomNum=()=>Math.floor(Math.random()*1001)

函数renderItem({item}){ 返回(


);
}

const OtasView=(道具)=>{

const[images,setImages]=useState(picsummages);
返回(
GeneratorAndomNum().toString()}/>
);
};
const styles=StyleSheet.create({
屏幕:{
弹性:1,
填充:10,
对齐项目:“中心”,
},
项目视图:{
弹性:1/3,
flexDirection:“列”,
辩护内容:“中心”,
对齐项目:“中心”,
差额:5,
方面:1,
边界半径:200/2
},
});
导出默认OtasView;
这可能会有所帮助

const [images, setImages] = useState(picsumImages); 

onSelect = index => {

  const data = […images].map(item => item.selected = false);  
  data[index].selected = true;
  setImages(data);

}


function renderItem({ item, index }) { 
  
  const style = index.selected ? styles.profileImgContainer : {};
  return (

  <TouchableHighlight style={style} onPress={() => onSelect(index)}>
   <FastImage
      source={{ uri: item}}
          style={styles.itemView}    
    />
  </TouchableHighlight> 
);

export default styles = StyleSheet.create({
  profileImgContainer: {
    marginLeft: 8,
    height: 80,
    width: 80,
    borderRadius: 40,
  },
  itemView: {
    flex: 1 / 3,
    flexDirection: "column",
    justifyContent: "center",
    alignItems: "center",
    margin: 5,
    aspectRatio: 1,
    borderRadius: 200 / 2
    }
});
const[images,setImages]=useState(picsummages);
onSelect=index=>{
常量数据=[…图像].map(项=>item.selected=false);
数据[索引]。所选数据=真;
设置图像(数据);
}
函数renderItem({item,index}){
const style=index.selected?style.profileImgContainer:{};
返回(
onSelect(索引)}>
);
导出默认样式=StyleSheet.create({
profileImgContainer:{
边缘左:8,
身高:80,
宽度:80,
边界半径:40,
},
项目视图:{
弹性:1/3,
flexDirection:“列”,
辩护内容:“中心”,
对齐项目:“中心”,
差额:5,
方面:1,
边界半径:200/2
}
});

您能否添加更多描述您所面临的具体情况
const [images, setImages] = useState(picsumImages);  

return (
    <FlatList data={images} renderItem={renderItem}  numColumns={3}  style={{ marginLeft: 18, marginRight: 18, marginTop: 40 }}  keyboardShouldPersistTaps="always"
    showsVerticalScrollIndicator={false} keyExtractor={(renderItem) => generateRandomNum().toString()}/>
   
  );
 
};

const styles = StyleSheet.create({
    screen: {
      flex: 1,
      padding: 10,
      alignItems: "center",
    },
    itemView: {
    flex: 1 / 3,
    flexDirection: "column",
    justifyContent: "center",
    alignItems: "center",
    margin: 5,
    aspectRatio: 1,
    borderRadius: 200 / 2
    },
  });
  
export default OtasView;
const [images, setImages] = useState(picsumImages); 

onSelect = index => {

  const data = […images].map(item => item.selected = false);  
  data[index].selected = true;
  setImages(data);

}


function renderItem({ item, index }) { 
  
  const style = index.selected ? styles.profileImgContainer : {};
  return (

  <TouchableHighlight style={style} onPress={() => onSelect(index)}>
   <FastImage
      source={{ uri: item}}
          style={styles.itemView}    
    />
  </TouchableHighlight> 
);

export default styles = StyleSheet.create({
  profileImgContainer: {
    marginLeft: 8,
    height: 80,
    width: 80,
    borderRadius: 40,
  },
  itemView: {
    flex: 1 / 3,
    flexDirection: "column",
    justifyContent: "center",
    alignItems: "center",
    margin: 5,
    aspectRatio: 1,
    borderRadius: 200 / 2
    }
});