【问题标题】:removing item from Flatlist从平面列表中删除项目
【发布时间】:2021-09-20 03:29:57
【问题描述】:

我需要创建一个函数来从平面列表中删除项目,这是我正在使用的,但不是删除项目,而是再次添加相同的项目:

removeItem = (key) => {
    let filteredItems = this.state.workoutList.filter(item => item.key !== key);
    this.setState({ workoutList: filteredItems })
  }

这是我运行终端时显示的内容:

Array [
  Object {
    "Friday": false,
    "Monday": true,
    "Saturday": false,
    "Sunday": false,
    "Thursday": false,
    "Tuesday": false,
    "Wednesday": false,
    "key": 0.3257222928276463,
    "workoutName": "",
  },
]

【问题讨论】:

    标签: javascript arrays reactjs react-native react-native-flatlist


    【解决方案1】:

    我认为你不能直接改变状态变量,你需要使用Object.assign()从状态复制这个数组来操作它。

    removeItem = (key) => {
       let filteredItems = Object.assign([], this.state.workoutList).filter(item => item.key !== key);
       this.setState({ workoutList: filteredItems })
    }
    

    应该做的工作

    【讨论】:

    • 感谢您的回复,但它并没有解决问题,它仍然再次创建相同的对象并返回警告:`遇到两个具有相同密钥的孩子,0.2881646929937661。`跨度>
    • 状态变量没有被改变,在this.state.workoutList 上使用filter 不会改变数组
    猜你喜欢
    • 2018-10-04
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2022-12-20
    • 2016-05-08
    • 2011-03-18
    • 1970-01-01
    相关资源
    最近更新 更多