Aquí estoy tratando de actualizar mis datos de estado con un reductor. Estoy enviando un objeto a través de despacho que consta de identificación y algunos datos. Por esta identificación, estoy tratando de actualizar un objeto específico de mi estado. Mi estado reductor es,
case "UPDATE_USER_SUCCESS": return { ...state, users: state.users.map((user) => { if (user.id !== action.payload.id) { return user; } else { return { ...user, ...action.payload, }; } }), };Aquí está la acción,
export const updateUser = (updatedUser) => (dispatch, getState) => { dispatch({ type: "UPDATE_USER_SUCCESS", payload: updatedUser, }); console.log(updateUser); localStorage.setItem( "Users", JSON.stringify(getState().addUserReducer.users) ); };Y mi envío es de aquí,
const formHandler = (e) => { e.preventDefault(); dispatch(updateUser(updatedUser)); console.log(name + email + phone + roles); }; return { ...user, ...action.payload, }; ¿Cuál es tu objetivo aquí? Si el usuario fuera una matriz, al utilizar este código, agregaría action.payload a su matriz. Pero el usuario es un objeto. Si quieres pasarle otro objeto, tienes que darle una clave:
return { ...user, whateverkey:action.payload, };y su objeto de usuario tiene un nuevo par clave-valor. además: si desea un acceso más fácil más adelante, también puede usar esto:
return { ...user, id:action.payload.id, name:action.payload.name, address:action.payload.address };