【问题标题】:Remove item object multiples arrays when onClick ReactonClick React时删除项目对象倍数数组
【发布时间】:2021-09-28 08:28:11
【问题描述】:

我有一个对象数组,里面有多个数组。当我单击按钮时,我试图删除该项目,但它返回未定义

数据 Json

[
  {
    "services": [
      {
        "id": "1b975589-7111-46a4-b433-d0e3c0d7c08c",
        "name": "PIX"
      },
      {
        "id": "91d4637e-a17f-4b31-8675-c041fe06e2ad",
        "name": "Income"
      }
    ],
    "accountTypes": [
      {
        "id": "1f34205b-2e5a-430e-982c-5673cbdb3a68",
        "name": "Digital Account"
      }
    ],
    "channels": [
      {
        "id": "875f8350-073e-4a20-be20-38482a86892b",
        "name": "Chat"
      }
    ]
  }
]

HandleDeleteItem

const handleDeleteFilter = (itemId: string) => {
    const items = filters.flatMap((param) => {
      Object.entries(param).flatMap(([key, arr]) =>
        arr.filter(({ id }) => id !== itemId)
      )
    })
    setFilters(items)
  }

点击功能按钮

onClick={() => handleDeleteFilter(filter.id)}

【问题讨论】:

  • 函数调用中的filter.id是什么

标签: javascript reactjs ecmascript-6 onclick


【解决方案1】:

您的第一个 flatMap 箭头函数使用方括号 (=> { ... }),但没有返回语句。试试这个:

const handleDeleteFilter = (itemId: string) => {
    const items = filters.flatMap((param) => {
        // Added a return here
        return Object.entries(param).flatMap(([key, arr]) =>
            arr.filter(({ id }) => id !== itemId)
        )
    })
    setFilters(items)
}

不是很清楚filters 是什么(我假设你显示的 JSON),所以我没有检查你的函数在逻辑上是否正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    相关资源
    最近更新 更多