티스토리 뷰

React

😯 useState()는 동기? 비동기?

baegofda_ 2021. 4. 1. 09:11

💡 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
«   2024/05   »
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 29 30 31
글 보관함