작성
·
7
0
그 선생님은 지금 문제에서 상태 변경할떄
setCount((count) => count +1); 로
해주셨는데
지금 상황에서는 그냥
setCount((count+1)) 로 해도 문제 없지않나용?
버튼 한번 눌렀을때 count+1 되는건 한번이니깐..?
연속으로 +1 증가하는 로직이 아니라서
이렇게 생각되는데 혹시 제가 뭘 놓치고있는건가요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. jyl08840님.
리액트에서 setCount
와 같은 상태 업데이트 함수는 비동기로 작동하며, 가끔씩 상태 업데이트 요청이 여러 번 겹치면서 의도치 않은 결과를 초래할 수 있습니다. 그래서 함수 업데이트 형식을 사용하는 것이 더 안전할 수 있습니다.
setCount((count) => count + 1);
vs setCount(count + 1);
함수 업데이트 방식: setCount((count) => count + 1);
는 이전 상태 값을 인자로 받아 새로운 상태 값을 계산합니다. 이 방법은 비동기적으로 실행되는 여러 상태 업데이트에서 발생할 수 있는 충돌 문제를 피하게 도와줍니다.
직접 업데이트 방식: setCount(count + 1);
는 현재 렌더링된 시점에서의 count
값을 참조합니다. 만약 여러 업데이트가 비동기적으로 발생한다면, 이 방식은 예측 가능한 결과를 보장하지 않을 수 있습니다.
만약 버튼을 연속으로 누르는 경우나 다른 복잡한 로직이 추가될 가능성이 있다면, 함수 업데이트 방식이 더 안전합니다.
이해에 도움이 될 수 있는 리소스를 추천합니다:
- React에서의 상태 업데이트와 비동기 특성 설명
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.