회고

useEffect와 resetrecoilstate의 환장의 콜라보

ddorongg 2023. 7. 24. 11:24

지금 인증창에서 받아오는 정보들을 recoil에 저장하고 그 정보를 서버로 보내야하는 데 그 과정 속에서 useEffect와 resetrecoilstate의 코드가 뒤섞여서 비동기 작업과 정보의 리셋들이 차례대로 되지 않아 빈 값을 보내거나 이전 값을 보내 통신에서 자꾸 에러가 났었다. 먼저 원인을 정확히 파악하지 못해 reset 작업만 계속 손보다가 콘솔을 일일이 찍어 본 후에 비동기의 문제라는 것을 알게 되었고 useEffect를 2개 쓰게 되면서 먼저 이뤄져야 하는 작업이 맨 뒤에 일어나게 돼 생기는 문제라는 것을 인식 후  useEffect 맨 뒤에 바뀔 때만 렌더링 될 수 있도록 리코일에 넣은 값을 이용하여 그 값이 바뀔 때만 렌더링 될 수 있도록 하였다. 그러자마자 리코일의  값이 리셋되면서 값이 있을 때 서버에 보내고  또 리셋되는대로 서버에 보내서 결론적으로 두번 통신하면서 빈 값을 보내게 되었다. 이것을 해결하기 위해 reset을 이 컴포넌트 로직에 쓰지 않고 다음 작업을 할 때 리셋되도록 설정했더니 정상적으로 한번만 보내게 되었다.

 

두서 없이 적었지만 useEffect와 reset의 사이클을 좀 더 알게 된 것 같다.