Да, карта возвращает новый массив. Но проблема в том, что вы изменяете объекты, которые находятся в этом массиве, вы не можете изменить el
с помощью el.goal = updatedGoal.goal
.
Когда вы используете функцию map
, почти всегда вы просто должны вернуть что-то из нееи не изменяйте базовые элементы напрямую.
Попробуйте сделать это точно в соответствии с рецептами редуксов :
case 'UPDATE_GOAL':
return state.goals.map((el, index) => {
if (el.id !== id*1) {
// This isn't the item we care about - keep it as-is
return el
}
// Otherwise, this is the one we want - return an updated value
return {
...el,
goal: updatedGoal.goal
}
})