개발자 99% 커뮤니티에서 수다 떨어요!
const getRegisterInput = (
tokenId: number,
slotNo: number,
slotLength: number,
ListNo: number,
ListLength: number,
Arr: any,
) => {
let tokenArr = [...Arr.tokenId];
if (tokenArr.length === 0) {
for (let i = 0; i < questListLength; i++) {
tokenArr?.push([]);
}
}
let dataArr = [...tokenArr[ListNo]];
if (dataArr?.length === 0) {
for (let i = 0; i < slotLength; i++) {
dataArr.push(0);
}
}
dataArr.splice(slotNo, 1, tokenId);
dispatch(
SliceAction.setInputData({
tokenId: tokenArr,
}),
);
};
안녕하세요 개인적으로 작업을 하다 오류를 만나 일주일째 로직 변경중인데 안되서 도움 청하고자 합니다..
Arr 라는 props 값은 위에 로직의 결과 값 즉, [state, setState] 에서 state 부분을 깊은복사(값 복사)를 통해 변수처리하여 값을 내려주었습니다.
최초 진행 시 위의 로직이 정상적으로 작동 됩니다. 이후 로직 재 실행 시 props 값에 맞게 기존 진행 된 값을 수정 합니다.
쉽게 예를 들면
최초 진행
props 값 : 8, 0, 5, 0, 4 (Arr 값 제외)
결과 값 : [ [8, 0, 0, 0, 0], [] ,[], [] ]
이후 진행 2번째
props 값 : 10, 1, 5, 0, 4
기대 값 : [ [8, 10, 0, 0, 0], [], [], [] ]
이후 진행 3번째
props 값 : 22, 0, 1, 1, 4
기대 값 : [ [8, 10, 0, 0, 0], [22], [], [] ]
최초 진행은 잘 되지만, 이후 진행 시 Uncaught TypeError: Cannot assign to read only property '1' of object '[object Array]'
에러가 발생합니다.
props 값을 변형 해준 것도 없고, 깊은복사와 얕은복사를 사용했지만.. 어딘가 꼬인 것 같습니다..
도움 부탁드리겠습니다..