【问题标题】:Updating State for changed item not displaying on react frontend更新未在反应前端显示的已更改项目的状态
【发布时间】:2021-10-09 23:25:27
【问题描述】:

我正在研究我的减速器,我正在努力让 UPDATE 工作。

当某个对象 ID 在状态发生变化时,我只是想更新我的反应前端上的列表。我怎样才能让它在这个reducer的前端改变具有特定ID的项目。

我在 UPDATE_ANIMALS 中尝试过,但没有成功

case 'UPDATE_ANIMALS':     
    return [      
        ...state, item => item.id === action.payload.id ? action.payload : item

];

下面是我的整个减速器。

export const ANIMALSReducer = (state = [], action) => {
  switch (action.type) {
    case 'FETCH_ANIMALS':
      return action.payload;
    case 'ADD_ANIMALS': 
      return [...state, action.payload]; 
    case 'DELETE_ANIMALS': 
      return [      
      ...state.filter(item => item.id !== action.payload)
     ]; 
     case 'UPDATE_ANIMALS':     
      return [      
        NOT SURE WHAT TO PUT HERE
       ];
    default:
      return state;
  }
};

【问题讨论】:

标签: reactjs redux


【解决方案1】:

您可以使用 map 函数非常轻松地实现这一点,基本上您正在生成一个新数组,并且给定有效负载的匹配项将使用有效负载而不是原始更新:

case 'UPDATE_ANIMALS':  
    return state.map(item => item.id === action.payload.id ? action.payload : item);

【讨论】:

  • 确实如此,我会更新代码,谢谢
  • 嗯,它没有在前端更新。
  • 你能发布 action.payload 返回的内容吗?
  • 它开始工作了!只是我这边的一个错误。
猜你喜欢
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 2016-07-10
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
相关资源
最近更新 更多