簡體   English   中英

如何在異化器中替換處於狀態的對象

[英]How to replace an object in state in a reducer

const initialState = []

case UPDATE_USER: {
  console.log(action, "this is action");
  return [
    ...state,
    state.map(
      user =>
        user.name === action.oldName
          ? {
              ...user,
              name: action.newName
            }
          : user
    )
  ];
}

所以我有這個初始狀態。 然后這是我對減速器的案例陳述之一

我試圖用新的用戶對象替換對象(用戶)。 所以我試圖映射數組,然后用新舊名稱替換它。 舊名稱和新名稱正確輸入。 但是,當前這會將10個對象的數組更改為10個對象的數組,而數組的最后一項是10個對象的數組。 非常令人困惑,但本質上

陣列從長度10增長到長度11

即使應該保持不變

數組的最后一項(本身就是數組)是我想要的新狀態的數組

那有道理嗎?

基本上它很近但是還不在那里

而不是使用的spread syntax ,所有你需要做的是return the mapped value ,因為你迭代通過你的減速狀態和單獨克隆在地圖內的對象。

case UPDATE_USER: {
  console.log(action, "this is action");
  return state.map(
      user =>
        user.name === action.oldName
          ? {
              ...user,
              name: action.newName
            }
          : user
    )
}

暫無
暫無

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

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