State 와 Prev

송현섭 ·2023년 3월 30일
0

개별공부

목록 보기
22/44

1. 함수 내에서 카운트 수 5번 증가 ( 증가 안됨 X )

function handleClick() {
   setCount(count + 1)      // 현재 count는 0 + 1 => 1을 상자에 담는다.
   setCount(count + 1)      // 1 이 상자에 담겼지만 여전히 count는 0 이므로 1이 상자에 담긴다
   setCount(count + 1)      // ...
   setCount(count + 1)      // ...
   setCount(count + 1)      // 같은 방식으로 최종적으로 1이 상자에 담겨 화면에 1이 반영된다
}
  • 기본적으로 State 에 담기는 값은 해당 값이 할당되자마자 담기는 것이 아님!

  • State의 값이 할당되면 그 값은 임시저장소에 들어가게 되며, 최종적으로 함수가 종료되었을 때 임시저장소에서 다시 불러와지면서 State의 값으로 할당이 됨

  • 따라서 위의 코드의 결과는 count === 1







2. 함수 내에서 카운트 수 5번 증가 (증가 됨 O) Prev 활용

function handleClick() {
   setCount((prev)=>prev+1)     // 임시저장공간의 0(기본값, prev) + 1 => 1을 상자에 담는다.
   setCount((prev)=>prev+1)     // 임시저장공간에 담긴 1(prev) + 1 => 2를 상자에 담는다.
   setCount((prev)=>prev+1)     // ...
   setCount((prev)=>prev+1)     // ...
   setCount((prev)=>prev+1)     // 같은 방식으로 최종적으로 5가 상자에 담겨 화면에 5가 반영된다
}
  • setState( ) 함수에 매개변수 prev 를 넣으면 이는 곧 임시저장소에 들어가는 값이 됨

  • prev 를 이용해서 임시저장소 안의 데이터에 접근하여 해당 데이터의 값을 바꿔주게 되면, 아직 값이 최종적으로 할당되어 변경되지는 않았지만 함수 종료 후 할당될 데이터 자체를 변경시키는 것임으로 결과적으로 데이터는 지정한 대로 바뀌게 됨

profile
막 발걸음을 뗀 신입

0개의 댓글