Я заполняю FlatGrid из API. Каждая сетка имеет значок, который по умолчанию имеет зеленый цвет. Я хочу изменить цвет определенного значка c при нажатии. Но на данный момент после нажатия иконки цвет всех иконок меняется. Кто-нибудь может подсказать, что нужно сделать? Прикрепление кода для справки. После нажатия иконки зеленый цвет должен превратиться в синий.
constructor(props){
super(props);
this.state={
isLoading: true,
dataSource: null,
color:'green'
}
}
colorChange(color)
{
if(color=='green')
{
this.setState({
color:'blue'
})
}
else
{
this.setState({
color:'green'
})
}
}
render(){
if(this.state.isLoading){
return (
<View style={styles.container}>
<ActivityIndicator size="large" />
</View>
)
}else{
console.log(this.state.dataSource)
return(
<ScrollView>
<FlatGrid
itemDimension={130}
items={this.state.dataSource}
style={styles.gridView}
renderItem={({ item, index }) => (
<View style={{borderWidth:1,borderStyle:'dashed',borderRadius:1,width:120,height:50,flexDirection:'row'}}>
<Text style={{fontSize:20,paddingLeft:10}}>{item.Name}</Text>
<Icon
name="car"
size={30}
key={item.Name}
style={{color:(item.Status=='Available'?this.state.color:'grey'),paddingLeft:20,backgroundColor:'white'}}
onPress={this.colorChange.bind(this.state.color)}
/>
</View>
)}
keyExtractor={item => item.Name}
/>
</View>