개발자
버튼을 누르면 QR코드를 받아오는 api를 재호출하여 Qr코드 이미지를 리렌더링 시키려 합니다. react query를 사용하는 것이 useEffect와 setState를 사용해서 api의 값을 화면에 그려주는 것보다 훨씬 속도가 빠르더군요. (react query는 refetch를 통해 api를 재호출 했습니다.) useEffect와 setState를 사용한다면 setState의 배치 처리 과정으로 인해, 즉시 값이 바뀌지 않고 비동기적으로 동작한다고 알고 있습니다. 하지만 react query의 어떤 동작 원리때문에 useEffect와 setState보다 빠르게 처리되는건지는 잘 모르겠습니다. 구글링으로 찾아보니 refetch는 백그라운드에서 처리된다고 하는데 백그라운드의 개념이 정확하게 이해가 되지 않습니다. 제가 추측하기론, react query를 사용하면 api의 응답값을 받자마자 data를 사용할 수 있습니다. setStatef로 state를 변경해주는 과정이 필요 없습니다. 그렇기에, useEffect와 setState를 사용한 것보다 더욱 빠른 렌더링을 보여줄 수 있는 것 같은데 맞을까요??
답변 0
첫 답변을 기다리고 있어요.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 01월 23일
React Query의 성능 향상은 몇 가지 이유로 인해 발생합니다. 1. **백그라운드 업데이트**: React Query는 기본적으로 데이터의 백그라운드 업데이트를 지원합니다. 이는 데이터를 불러오는 동안 UI가 차단되지 않음을 의미합니다. 반면에, useEffect와 setState를 사용할 때 비동기 요청이 실행될 때마다 컴포넌트가 리렌더링 되어야 합니다. 이렇게 하면 컴포넌트가 추가적인 일을 해야하고, 일부 경우에는 불필요한 작업이 될 수 있습니다. 2. **캐싱**: React Query는 자동으로 데이터를 캐시하기 때문에 중복 호출이 줄어들어 성능이 향상됩니다. 같은 API를 여러 번 호출해야 하는 경우, React Query는 캐싱된 데이터 버전을 반환하여 네트워크 요청 시간을 절약합니다. 3. **병렬화**: React Query의 refetch 기능은 병렬 처리가 가능한 작업들을 백그라운드에서 동작하도록 설정할 수 있습니다. 따라서 여러 API 호출이 동시에 일어날 수 있고 이로 인해 전체 처리 시간이 단축됩니다. 4. **상태 관리 최적화**: 제일 중요한 것 중 하나는 React Query가 상태 관리를 효율적으로 처리한다는 것입니다. 내부적으로 사용하는 setState 방식은 React의 배치 업데이트 메커니즘에 따라 최소한의 리렌더링만 유발합니다. 그러므로, 이러한 이유들로 React Query가 useEffect와 setState를 사용했을 때 보다 더 빠른 성능을 보여줄 수 있습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!