簡體   English   中英

如何從 React redux 商店中刪除特定項目?

[英]How to delete a specific item from react redux store?

我正在嘗試從 React Redux 商店中刪除特定項目。 我的 initialState 是一個多維數組:

{
    "flex": [
        {
            "id": "01-00-1234567890",
            "positions": [
                {
                    "id": 0,
                    "bezeichnung": "24V LED Stripe IP00, 380lm/m, 2700K, 4,8W/m - 5000 mm (24 W)",
                    "artikelnummer": "B15201027",
                    "zusatz": "5000",
                    "menge": 1,
                    "bp_produkt": 63.7,
                    "bp_gesamt": 63.7
                },
                {
                    "id": 1,
                    "bezeichnung": "24V LED Driver 25W",
                    "artikelnummer": "370202500",
                    "zusatz": "0",
                    "menge": 1,
                    "bp_produkt": 68.82,
                    "bp_gesamt": 68.82
                }
            ]
        },
        {
            "id": "01-01-1234567890",
            "positions": [
                {
                    "id": 0,
                    "bezeichnung": "24V LED Stripe IP00, 380lm/m, 2700K, 4,8W/m - 5000 mm (24 W)",
                    "artikelnummer": "B15201027",
                    "zusatz": "5000",
                    "menge": 1,
                    "bp_produkt": 90.7,
                    "bp_gesamt": 90.7
                },
                {
                    "id": 1,
                    "bezeichnung": "24V LED Driver 25W",
                    "artikelnummer": "370202500",
                    "zusatz": "0",
                    "menge": 1,
                    "bp_produkt": 101.82,
                    "bp_gesamt": 102.82
                }
            ]
        }
    ]
}

現在,我想從商店的 ID 為“01-00-1234567890”的父數組中刪除 id:1 的項目。

我當前的減速器 function 如下所示:

deletePosition(state, action) {
      const itemId = action.payload.konfigId // 01-00-1234567890
      const positionId = action.payload.row.position // 1

      console.log(current(state))

      state.data.flex = state.data.flex
        .filter(items => {
          return items.id == itemId
        })
        .map(pos => pos.positions.filter(p => p.id == positionId))
    }
  }

我是 Redux 和 React 的新手,需要幫助

非常感謝

 const state = { data: { "flex": [{ "id": "01-00-1234567890", "positions": [{ "id": 0, "bezeichnung": "24V LED Stripe IP00, 380lm/m, 2700K, 4,8W/m - 5000 mm (24 W)", "artikelnummer": "B15201027", "zusatz": "5000", "menge": 1, "bp_produkt": 63.7, "bp_gesamt": 63.7 }, { "id": 1, "bezeichnung": "24V LED Driver 25W", "artikelnummer": "370202500", "zusatz": "0", "menge": 1, "bp_produkt": 68.82, "bp_gesamt": 68.82 } ] }, { "id": "01-01-1234567890", "positions": [{ "id": 0, "bezeichnung": "24V LED Stripe IP00, 380lm/m, 2700K, 4,8W/m - 5000 mm (24 W)", "artikelnummer": "B15201027", "zusatz": "5000", "menge": 1, "bp_produkt": 90.7, "bp_gesamt": 90.7 }, { "id": 1, "bezeichnung": "24V LED Driver 25W", "artikelnummer": "370202500", "zusatz": "0", "menge": 1, "bp_produkt": 101.82, "bp_gesamt": 102.82 } ] } ] } }; const itemId = '01-00-1234567890'; const positionId = 1; const nextState = state.data.flex.map(v => { if(v.id === itemId) { return {...v, positions: v.positions.filter(pos => pos.id;== positionId) } } return v; }). console:log('nextState, '; nextState);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM