setState의 동작에 대해 질문 있습니다(1)
299
작성한 질문수 3
첫번째 질문:
아래와 같은 상황에서
+버튼을 한번 클릭 했을 때
count에는 1이 저장되게 됩니다. 그렇다는 것은
두 개의 setCount 함수 중 맨 마지막 setCount만
실행된다는 의미로 받아들이면 될까요?
아니면 두 setCount 함수가 실행되지만
받고있는 인자 count는 두 함수 모두 0을 받는다고 생각해야할까요?
const Counter = () => {
const [count, setCount] = useState(0);
return (
<>
<StyledText>count : {count}</StyledText>
<Button title='+' onPress={() => {
console.log('count 1 : ' + count);
setCount(count + 1);
console.log('count 2 : ' + count);
setCount(count + 1);
console.log('count 3 : ' + count);
}}/>
</>
)
}
답변 1
0
안녕하세요,
마지막것만 실행되는 것이 아니라,
count가 0인 상태로 +1이 되어 세 함수 모두 count를 1로 변경하는 것입니다.
상태변수를 변경하는 함수는 비동기로 동작해서 위의 코드는 다음과 같이 동작합니다.
1) 첫 번째 setCount를 부를 때는 count가 0. 그래서 count + 1 은 1이 됩니다.
2) 두 번째 setCount를 부를 때는 아직 1)에서 실행한 함수가 반영되기 전이라 count는 0. 그래서 두 번째 setCount도 count + 1은 1이 됩니다.
3) 세 번째는 두 번쨰 setCount와 같은 이유로 count + 1은 1이 됩니다.
세 함수 모두 실행됩니다. 사용하는 count 상태 변수의 값이 계속 0인 것입니다.
즐거운 하루 되세요
감사합니다.
0
추가로, 아직 강의 초반인데 useState가 조금 더 궁금하다면,
섹션6 2번째 강의에서 useState를 조금 더 자세하게 설명하니, 이 강의를 확인해 보시기 바랍니다.
맥북 m4에서 nvm으로 설치불가
0
119
2
expo 사용하지 않고 앱 실행 시, 데이터 불러오기
0
350
1
리덕스강의는 없나요?
0
275
1
선생님 도와주세요 ㅠㅠ (로그인, 회원가입, 콘솔 에러)
0
507
1
버젼 업데이트
0
428
1
expo start중 metro bundler가 같이 실행되지 않아요
0
505
1
모바일 expo 실행오류
0
854
1
안드로이드에서 expo실행이 안되요
0
852
2
터미널 다운 및 사용방법
0
297
1
expo init 에러
0
744
2
안녕하세요. 스택네비게이션 문제 질문드립니다 ㅜ
0
327
1
배포중 에러 해결이 안되네요.. ㅜㅜ
1
3230
1
안녕하세요! 강의 Chat App - Part 1 회원가입 부분에서 firebase 관련 에러가 납니다.
0
695
1
styled-components 에러
0
405
1
OS 네이트브 코드를 개발하면서 UI 를 리액트 네이티브로
0
494
1
저장하면 바뀐값들 보여야하는데 재렌더링이 안일어납니다..
0
506
1
안드로이드스튜디오 EXPO 어플 튕깁니다 ㅠㅠ
0
288
1
styled component를 사용하면 터집니다 ㅠㅠ
0
414
1
attrs, 속성, props 가 혼란스럽습니다.
0
352
1
안녕하세요, 강의 잘 들었습니다 :) RN과 파이어베이스 관련해서 질문드릴게 있습니다!
0
586
1
자꾸 The request timed out 에러가 뜹니다 .
0
1939
1
코드 좀 봐주세요 버튼 두개가 생성이 안되요
0
284
1
expo 실행시 스타일 속성 바로 보려면 어디서 보나요?
0
434
1
자바스크립트 () => 의미는요???
0
448
2





