인프런 커뮤니티 질문&답변

도로롱님의 프로필 이미지
도로롱

작성한 질문수

프로젝트로 배우는 React.js

07 useState

state가 업데이트되는 기준이 궁금합니다.

해결된 질문

작성

·

215

0

리렌더링하기 전에 state를 한번에 업데이트 시켜준다고 하셨는데

 const [number, setNumber] = useState(1);
 const double = () => {
  setNumber(number * 2);
  console.log(number);
 };

여기서 state는 number 하나밖에 없는데 double을 실행했을 때 왜 2배가 된 number값이 찍히지 않는거죠? state를 한번에 업데이트시켜주는데 어차피 state가 하나니까 number값이 업데이트되고, 그게 콘솔에 찍힐 것 같은데 말이죠..

 

그리고 만약 const [number1, setNumber1] = useState(1);도 있다고 가정하면

 setNumber(number * 2);
 setNumber1(number1 * 2);
 console.log(number);

위와 같은 경우에 코드는 위에서부터 실행되니까 number와 number1 둘다 업데이트가 된 다음에 콘솔이 찍히는거라 number가 2배된 값일 것 같은데 아닌 이유는 뭐죠? console.log가 set함수보다 먼저 찍히는건가요?

 

답변 미리 감사드립니다!

답변 1

0

코지 코더님의 프로필 이미지
코지 코더
지식공유자

set을 사용하면 비동기적으로 실행됩니다

set 함수가 실행되고 그 다음줄에 console.log는 동기적으로 실행되므로 console.log가 먼저 실행 되게 됩니다

도로롱님의 프로필 이미지
도로롱

작성한 질문수

질문하기