티스토리 뷰
💡 React의 useState()는 비동기인가요 동기인가요?
- 네, 이 질문은 제가 면접에서 들은 질문입니다. React를사용하면서 당연하듯 찍어서 쓰던 useState()..
비동기인가요? 라는 질문에 많이 당황했습니다. 때문에 적어보는 useState()는 과연 동기일까? 비동기일까?
🙏 결론부터 말하자면
- useState()의 setState는 이벤트 핸들러 내에서 비동기적으로 동작합니다.
즉, 하나의 이벤트 핸들러 내에서 setState가 여러번 호출된다면, 일괄적으로 업데이트하고 렌더링을 합니다.
이는 뚜렷한 성능 향상을 만들어냅니다.
🙄 그럼 왜 그럴까요?
- React는 DOM을 직접 조작하는 대신 Virtual DOM을 이용해 조작됩니다. 이를 기반으로 state가 변경이 되면
re-render를 하게 되는데 한꺼번에 여러번 많이 발생하게 된다면 그 만큼 많은 렌더링이 발생합니다. 이를 방지하기 위해
state의 변경 사항을 즉시 반영하지 않고 대기열에 넣은후 한꺼번에 적용 시킵니다.
이과정에서 setState호출 후의 state 값이 개발자가 의도하지 않는 값이 될 수도 있습니다.
🤷♀️ 그럼 어떻게 하면 최신으로 유지하나요?
- 방법은 업데이트 후의 state값을 접근하는 것이며
componentDidUpdate(class component), useEffect(functional component) 등의 사용으로 해결 할 수있습니다.
'React' 카테고리의 다른 글
😏 useEffect (0) | 2021.08.16 |
---|---|
🛠 에러 픽스하기 - 데이터 변환 (0) | 2021.07.08 |
🙎♀️ 조건부 렌더링 (0) | 2021.04.05 |
🤬 CORS? 그게 뭔데 ! (0) | 2021.01.27 |
🧩 React ? (0) | 2020.12.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- nodejs
- 오물오물
- CORS
- VanillaJS
- inline
- vue입문
- vue3
- vue
- CSS
- vue예제
- 공공데이터포털
- 프론트엔드개발자
- 노드JS
- JavaScript
- font-family
- 프론트엔드
- 프론트엔드회고
- cssom
- react
- 프론트엔드면접
- function
- axios
- 개발자회고
- HTML
- postman
- baegofda
- INPUT
- 리액트
- 공공데이터
- 생활코딩
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함