React - state

wldls·2022년 11월 28일
0

React

목록 보기
5/12

array, object state 변경하는 법

  let [logo, setLogo] = useState(["ReactBlog1", "ReactBlog2", "ReactBlog3"]);
  
  return (
  	<button
          onClick={() => {
            let copy = [...logo];
            copy[0] = "여자코트";
            setLogo(copy);
          }}
        >
      버튼
   </button>
  )
        

주의 ❗
array/object 다룰 때 원본은 보존해야 한다

let copy = [...logo];

copy라는 신규 state에 기존 state를 담아 복사본은 만든다
그 다음 복사본에 수정 데이터를 할당한다
하지만 여기서 ... <- 이것은 무슨 뜻일까 알아보자

... 는 괄호 벗기기용 연산자이다
괄호를 벗기고 다시 새로운 괄호를 씌우는 것
-> 완전히 독립적인 사본이 생기는 것, 화살표도 달라진다
그러므로 새로운 state로 인식하여 state변경이 이루어짐

  • state 변경함수 특징
    신규 state===기존 state의 경우 변경 안해준다
    -> 에너지 절약 때문

  • array/object 특징

let arr = [1,2,3]

arr에 1,2,3을 할당하는게 아니라
array/object 담은 변수엔 화살표만 저장되는 것이다

arr 변수 안에는 [1,2,3]이 어디있는지 알려주는 화살표만 들어있음

그러므로 이러한 원리를 살펴보면

logo[0] = "여자코트";

이렇게만 할당하면 RAM에 "여자코트" 라는 데이터는 들어가지만
변수에 있던 화살표는 수정 안된 상태이다
기존 state와 신규 state가 바뀐것이 없다 라고 인식하여 수정이 안됨
함수 카피본은 {...기존 state}이런식으로 쓰면 된다

정리

기존 state가 array/object이면 독립적 카피본을 만들어 수정해야 한다

profile
다양한 변화와 도전하는 자세로

0개의 댓글