반응형
카엔입니다
카엔
카엔입니다
전체 방문자
오늘
어제
  • 분류 전체보기 (98)
    • 프론트엔드 (74)
      • JavaScript (22)
      • CSS (2)
      • React (21)
      • Next.js (12)
      • 블록체인 (2)
    • 에러 모음 (11)
    • Git (5)
    • 백엔드 (1)
      • GraphQL (1)
    • AWS (2)
    • CS (1)
    • 코딩테스트 (1)
    • 개발 이야기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • useMemo
  • git 덮어쓰기
  • error
  • ipc 통신
  • Cloudfront
  • unoptimized error
  • Next.js
  • 웹상동작과정
  • ChatGPT
  • 모바일 파란 박스
  • 자릿수 채우기
  • useCallback
  • nextron ipc
  • ec2
  • nextron
  • git
  • 이벤트루프
  • 자바스크립트 이진수 변환
  • 구글 스프레드시트 API
  • DOUBLE CHECK CONFIGURATION Please double check that you have setup a PAID OpenAI API Account. You can read more here: https://docs.agpt.co/setup/#getting-an-api-key

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
카엔입니다

카엔

프론트엔드/React

useState는 비동기일까 동기일까? ( 배치 )

2023. 2. 6. 18:39

정답 먼저 얘기하자면 useState는 비동기 적으로 동작한다

 

왜 비동기적으로 동작하냐면 렌더링 문제와 관련이 있다고 할 수 있는데

리액트에서는 상태가 변경될때 마다 리렌더링을 한다는 것을 알고 있을 것이다

그럼 setState가 연속으로 호출되면 어떨까?

// ex
const manySetState = () => {
	setState(...);
    setState(...);
    setState(...);
    setState(...);
    ...
}

고작 함수 한번에 엄청나게 많은 리렌더링이 발생할 것이다

당연하겠지만 이건 문제가 있다

 

그래서 리액트에서는 배치(batch)라는 것을 사용한다

batch는 위에 언급한 문제를 해결한 방법인데

 

여러개의 setState를 하나의 리렌더링으로 묶어주는 방법이다

 

더 자세하게 얘기하면 16ms동안 변경된 상태 값들을 하나의 batch로 묶으며

함수 단위로 batch를 나눈다

즉, 함수가 3개면 batch도 3개다

 

 

 

리액트의 상태업데이트시 리렌더링을 공부하다 의문이 들어서 찾아봤었는데

이미 똑똑하신 분들은 다 정답을 만들어두셨다

18버전에서는 batch가 더 강화된 것으로 알고있는데 리서치가 끝나면 새로 포스팅할 예정이다

 

 

잘못된 정보이거나 부족한 부분이 있으면 누구든 피드백 주시면 감사드리겠습니다

저작자표시 (새창열림)

'프론트엔드 > React' 카테고리의 다른 글

리액트 생명주기란 뭘까  (0) 2023.02.18
리액트 내부 동작 원리  (0) 2023.02.17
React Query 공식문서 정리  (0) 2022.12.28
chatGPT를 사용한 리액트 최적화 [ memo, useMemo, useCallback ]에 대한 내용  (0) 2022.12.22
리액트 Batching  (0) 2022.11.03
    '프론트엔드/React' 카테고리의 다른 글
    • 리액트 생명주기란 뭘까
    • 리액트 내부 동작 원리
    • React Query 공식문서 정리
    • chatGPT를 사용한 리액트 최적화 [ memo, useMemo, useCallback ]에 대한 내용
    카엔입니다
    카엔입니다
    https://www.kaen.site/

    티스토리툴바