Мне удалось изменить цвет фона кнопки onPressed внутри Flatlist, назначив item.id состоянию. Моя проблема в том, что когда я нажимаю другую кнопку, ранее нажатая кнопка возвращается к исходному фоновому цвету. Как я могу сохранить новый фоновый цвет, даже когда я нажимаю другую кнопку?
onPressButtonarrived(item.id) {
this.setState({ disablearrived: item.id })
this.setState({ colorarrived: item.id })
}
<View style = {{backgroundColor: item.id === this.state.colorarrived ? '#D6D6D6' : '#E5C454'}}>
<TouchableOpacity
onPress = {() => {this.onPressButtonarrived(item.id)}} disabled = {item.id === this.state.disablearrived ? true : false}>
<Text>Arrival</Text>
</TouchableOpacity>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам нужно иметь некоторые значения состояния для каждого элемента:
onPressButtonarrived(item.id) {
this.setState({ [item.id +'-disablearrived']: !this.state[item.id] });
this.setState({ [item.id +'-colorarrived']: !this.state[item.id] });
// that should toggle some true false vars for each item.id
}
<View style = {{backgroundColor: this.state[item.id +'-colorarrived'] ? '#D6D6D6' : '#E5C454'}}>
<TouchableOpacity
onPress = {() => {this.onPressButtonarrived(item.id)}} disabled = {!!this.state[item.id +'-disablearrived']}>
<Text>Arrival</Text>
</TouchableOpacity>
Работает, как шарм! Спасибо за это, приятель. Мне пришлось изменить !state[item.id] на !this.state[item.id] в функции, но это помогло!
Я обновил ответ небольшой настройкой this.state . Я рад, что проблема решена.
Не могли бы вы опубликовать весь код здесь. Это может помочь мне. Я не могу понять, что происходит в ответе.