【问题标题】:React Native: Change and keep the background color of only onPressed item inside FlatlistReact Native:更改并保留 Flatlist 中仅 onPressed 项目的背景颜色
【发布时间】:2019-01-24 14:51:36
【问题描述】:

我已经设法通过将 item.id 分配给状态来更改平面列表中 onPressed 按钮的背景颜色。我的问题是,当我按下另一个按钮时,之前按下的按钮会变回初始背景色。即使按下另一个按钮,如何保持新的背景颜色?

 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 reactjs react-native


【解决方案1】:

您需要为每个项目设置一些状态值:

 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 调整更新了答案。我很高兴问题得到解决。
猜你喜欢
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 2019-11-06
  • 2016-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多