У вас все хорошо, do not to mutate the state
просто означает, не изменяйте prevState
, просто обновляйте состояние.
Основная ошибка заключается в том, что вы пытаетесь изменить состояние ученика, как раньше. Тип array
, и пока вы его обновляете, вы сделали это как object
, просто опечатка. используйте [] вместо {}
const state = {
id: 1,
students: [
{first: 1},
{second: 2},
{third: 3}
]
}
const action = {
data: {
students: [
{fourth: 4}
]
}
}
const updatedStudents = {
...action.data.students
}
console.log(state);
console.log(updatedStudents);
Итак, в вашем случае ->
case types.ADD_STUDENT_DETAILS:
const stateObj = state.map((class, i) => {
if (class.id === action.data.id) {
return {
...class,
students: [
...action.data.students,
],
};
}
return {
...class,
};
});
return stateObj;