Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
Redux 데이터 읽기전용 오류.. 도와주세요
#react
1년 전
4,506
5
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 값을 변형 해준 것도 없고, 깊은복사와 얕은복사를 사용했지만.. 어딘가 꼬인 것 같습니다..

도움 부탁드리겠습니다..

5 comments