반응형
react-query를 사용해서 POST 요청을 하기 위해서는 react-query의 mutate
를 사용하고, 비동기 요청을 위해서는 mutateAsync
를 사용한다.
페이지에 접속했을 때, POST 요청을 보내는 시나리오가 있어서 아래와 같이 useMutation
을 선언하고, useEffect
에 mutateAsync
를 호출했다.
회사와 관련된 코드가 있어서 간단하게 작성했다.
위와 같이 선언 및 호출을 하고, 페이지에 접속하고, 크롬 개발자도구의 Network 탭에 접속해보면 해당 요청이 2000~3000개 이상 요청된다.
이런 현상이 발생하는 이유는 mutateAsync
를 통해서 POST 요청이 실행되고, 해당 요청으로 인해서 mutation 객체가 변경되었기 때문에, useEffect가 다시 실행되어 mutateAsync
가 계속 요청되는 것이다.
이런 현상을 해결하기 위해서 아래와 같이 변경하면된다.
useMutation
의 mutateAsync
를 destruct하고, mutateAsync
만 useEffect의 dependencies로 추가한다.
이렇게 변경하면 mutateAsync
가 실행되어도 mutateAsync
자체는 변경되지 않기 때문에 useEffect가 다시 실행되지 않는다.
반응형
'IT > react' 카테고리의 다른 글
Turborepo + Yarn berry를 이용한 Monorepo 구축 방법 (0) | 2023.01.02 |
---|---|
[번역][Next.js] Layout RFC (0) | 2022.07.29 |
CRA로 React 설치할 때 create-react-app 버전 이슈 (0) | 2022.02.21 |
Next.js에서 styled-component를 사용하기 위한 방법 (0) | 2021.12.06 |
react-router-dom v5, v6 비교 (1) | 2021.12.04 |
댓글