Published 2022. 4. 26. 22:54

코드작성할때 

<button onClick={() => {
        let copy = 글제목;
        copy[0] = '여자코트 추천'
        set글제목(copy)
      }}>글수정</button>

이렇게하면안됌

<button onClick={() => {
        let copy = [...글제목];
        copy[0] = '여자코트 추천'
        set글제목(copy)
      }}>글수정</button>
이렇게해야됌

왜그런거임?

[state변경함수 특징]
1.기존 state랑 신규 state랑 비교해서같으면 변경안해줌
자원절약측면임
2.array나 object 동작방식

let 글제목 = [1,2,3];

글제목[0]= '여자코트 추천';
글제목변경(글제목)


이렇게해도 안됌 왜그럼?

동작을 잘생각해보셈

let 글제목 => RAM으로 저장되는데 
array를 수정했지 변수에 있던 화살표(바인딩하는거 모르면 자바스크립트 구조분해 검색 ㄱㄱ)는 수정안됌


기존state도 글제목
변경state도 글제목이라서 변경안해줌

let copy =글제목;
copy[0] ='여자코트 추천'
console.log(copy == 글제목) //애네는 항상같음 그래서 state 변경이안됌 
copy는 기존 state랑 똑같아서그럼 =>>referfenc data type 이란것 때문에그런거임


글제목변경(copy)
복사를했기때문에 되야되는데 안됌


변수1&변수2 화살표가 같으면
변수1 == 변수2 비교해도 true나옴


 [...글제목];이게뭐냐면 괄호를 벗겨주세요 이런거임 화살표도 달라짐


빡대가리식 정리
기존 state가 array나 obeject다 
독립적 카피본[...변수]을 만들어서 수정해야함

Shallow copy나

deep copy를해서하면됌

복사했습니다!