是否有办法更新一个特定的数组对象在减速机在反应?



在这里,我试图用减速器更新我的状态数据。我正在通过分派发送一个对象,它由id和一些数据组成。通过这个id,我试图更新我的状态的一个特定对象。我的状态减速器是

case "UPDATE_USER_SUCCESS":
return {
...state,
users: state.users.map((user) => {
if (user.id !== action.payload.id) {
return user;
} else {
return {
...user,
...action.payload,
};
}
}),
};

动作,

export const updateUser = (updatedUser) => (dispatch, getState) => {
dispatch({
type: "UPDATE_USER_SUCCESS",
payload: updatedUser,
});
console.log(updateUser);
localStorage.setItem(
"Users",
JSON.stringify(getState().addUserReducer.users)
);
};

和我的调度是从这里,

const formHandler = (e) => {
e.preventDefault();
dispatch(updateUser(updatedUser));
console.log(name + email + phone + roles);
};
return {
...user,
...action.payload,
};

你的目标是什么?如果user是一个数组,通过使用这段代码,可以将action.payload添加到数组中。但是user是一个对象。如果你想传递另一个对象给它,你必须给它一个键:

return {
...user,
whateverkey:action.payload,
};

和您的用户对象有一个新的键值对。此外:如果你想更容易地访问,你也可以使用这个:


return {
...user,
id:action.payload.id,
name:action.payload.name,
address:action.payload.address
};