Информация о фрагменте: состояние имеет фрагмент educationList
, который представляет собой массив различных образований (BS, MS, PhD). Каждый элемент в массиве educationList
содержит другой массив description
, который содержит информацию для проектов, thesis et c.
Ниже приведен фрагмент для удаления одного из элементов массива description
:
case Actions.DELETE_ROLE: {
let updatedEducationList = [...state.educationList];
const targetIndex = updatedEducationList.findIndex((educationItem) => {
return educationItem.id === action.payload.educationId;
});
let oldDescription = updatedEducationList[targetIndex].description;
let newDescription = oldDescription.filter((item, index) => index !== action.payload.roleIndex);
updatedEducationList[targetIndex] = { ...updatedEducationList[targetIndex], description: newDescription };
return { ...state, educationList: updatedEducationList };
}
, если следующая строка в фрагменте,
updatedEducationList[targetIndex] = { ...updatedEducationList[targetIndex], description: newDescription }
заменена на
updatedEducationList[targetIndex].description = newDescription; //Edited this line
, возникает ошибка. Ошибка следующая.
core.js:6014 ERROR TypeError: Cannot assign to read only property 'description' of object '[object Object]'
at educationListReducer (education-list.reducer.ts:110)
at combination (store.js:303)
at store.js:1213
at store.js:383
at ScanSubscriber.reduceState [as accumulator] (store.js:688)
at ScanSubscriber._tryNext (scan.js:49)
at ScanSubscriber._next (scan.js:42)
at ScanSubscriber.next (Subscriber.js:49)
at WithLatestFromSubscriber._next (withLatestFrom.js:57)
at WithLatestFromSubscriber.next (Subscriber.js:49)
Но я думаю, что уже скопировал состояние в самой 1-й строке.
let updatedEducationList = [...state.educationList];
Чего мне здесь не хватает?