在Redux中更新嵌套对象的属性

问题描述 投票:0回答:2

我的Redux状态具有以下结构:

const state = {
 transactions: {
    1: {
       TransactionId: 1, Status: "Pending", Type: "Withdrawal", ClientName: "Paul Carter", Amount: "$28.43"
    },

    2: {
      TransactionId: 2, Status: "Completed", Type: "Refill", ClientName: "Caldwell Reid", Amount: "$45.16"
  },
...
}

鉴于我有transactions,从id更新/删除对象的正确方法是什么?

[这是我尝试更新Status中的reducer属性的方法,但是它似乎不起作用,我的状态保持不变。

const transactionsReducer = (state, action) => {
    case CHANGE_TRANSACTION_STATUS:
      return {
        [state.transactions[action.id].Status]: action.status
       }
}
reactjs redux react-redux immutability
2个回答
0
投票

您在这里,它应该看起来像这样:

如果直接在transactions中获得state对象:

return {
    ...state,
    [action.id]: {
        ...state[action.id] ,
        Status : action.status
    }
}

0
投票

您可以这样做:

const transactionsReducer = (state, action) => {
  switch (action.type) {
    case CHANGE_TRANSACTION_STATUS:
      return {
        ...state,
        transactions: {
          ...state.transactions,
          [action.id]: {
            ...state.transactions[action.id],
            status: action.status
          }
        }
      }
      return {
        [state.transactions[action.id].Status]: action.status,
      }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.