[英]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.