개발자

react-query & redux-toolkit을 이용한 user 상태관리 질문

2023년 05월 13일조회 551

react-query를 이용해서 user정보를 받아와 return data를 이용해 그대로 user 정보를 사용했는데 유저 정보를 수정하려다 보니 setQueryData메서드를 이용해서 onChange로 변화값 받아서 수정 후 업데이트를 진행해야 하는지 아니면 useQuery로 받은 user 정보를 redux-toolkit을 이용해 등록 후 dispatch로 상태관리 하다 수정 api를 실행해야하는지 궁금합니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 2

인기 답변

손정현님의 프로필 사진

안녕하세요! 구현 방식이 살짝 헷갈리는데 혹시 맞는지 확인 부탁드립니다. - react-query와 redux를 같이 사용 중 - react-query의 useQuery로 서버에서 user 정보 받아오는 중 - 받아온 정보를 redux에서 관리? (맞나요?) - 유저 정보 수정하면 상태를 관리하고 있는 redux든 react-query든 수정을 해야하는데 어떻게 해야하는지 궁금함 우선 react-query와 redux로 어떤 상태 값들을 관리할지 정리하면 좋을 것 같습니다. 단순히 질문 내용만 봤을때는 유저 정보를 react-query에서 redux로 넘겨줄 이유가 뭔지 잘 모르겠습니다. 둘중 하나만 쓰면 되지 않나? 라는 생각이 들었어요. react-query의 캐싱 데이터도 결국 context api를 이용해서 관리중이기 때문에 같은 데이터를 굳이 두 곳 다 저장할 필요가 없지 않을까 생각됩니다. 단순히 react-query만 놓고 설명을 드리자면, 상태 값 mutation의 경우 react-query는 useMutation이라는 함수가 있습니다. 일반적으로 mutation (수정/삭제/생성) 성공 시 가지고 있던 쿼리 키를 invalidate 시키는 방식을 사용합니다. 예를 들면, useUser() 라는 훅에서 useQuery 훅을 사용하는데 이때 쿼리 키가 ["CURRENT_USER"] 라면, updateUser() 라는 mutation을 실행하고 난뒤에 queryClient.invalidateQueries({ queryKey: ["CURRENT_USER"] }) 함수를 호출해서 useUser가 다시 서버로 요청을 하게끔 할 수 있습니다. 다만, 이렇게 구현하면 서버 요청 결과를 기다리는 시간이 어느정도 걸리기 때문에 UI에 즉각적인 반응이 중요하다면 optimistic update으로 구현하는 편이며 이때는 질문자님이 말씀하신 queryClient.setQueryData를 쓸수도 있습니다. setQueryData는 queryClient에 저장된 캐싱을 직접 수정해줄때 사용하는 함수인걸로 알고있어요. 정리하자면, 이렇게 될 것 같아요. 1. useQuery로 받아온 데이터가 있음. 이 데이터는 react-query가 관리해줌. 2. 데이터 변경을 위해 useMutation으로 서버에 수정 요청을 보냄. 3. 성공하면 쿼리 키를 invalidate 시켜서 useQuery 훅이 다시 서버를 요청하게 함. 4. 다만, UI 변경이 즉각적이어야하면 서버 요청 응답 시간 동안 setQueryData 등을 사용해서 optimistic update을 구현할 수 있음 . redux-toolkit은 사용해본적이 없긴하지만 문서만 슬쩍 봤을때는 react-query와 유사한 기능을 리덕스로 할 수 있게 도와주는 툴인것 같습니다. redux-toolkit과 react-query 둘다 외부 API 조회하고 상태 관리한다는 점에서 유사한것 같아요. 정확한 구현 방식과 react-query와 redux 및 redux-toolkit을 어떻게 사용하고 계신지 알수가 없어서 답변이 약간 산으로 간것 같지만 react-query는 캐싱 메커니즘이 들어간 상태 관리 툴로 생각하시면 이해하는데 좀 도움이 되실 것 같습니다. 참고하시면 좋을법한 링크 첨부할게요 :) - https://parang.gatsbyjs.io/react/2022-react-13/

커리어리 AI 봇님의 프로필 사진

React Query와 Redux Toolkit은 둘 다 상태 관리 도구입니다. React Query는 서버 데이터를 가져오고 캐싱하며, Redux Toolkit은 클라이언트의 상태를 효율적으로 관리하는 데 사용됩니다. User 정보를 수정하고 상태를 업데이트해야하는 경우, 어떤 방법을 선택할지는 프로젝트의 구조와 개발 스타일에 따라 다를 수 있습니다. React Query의 setQueryData 메서드를 사용하여 데이터를 직접 수정하고 싶다면, 해당 방법을 사용하셔도 좋습니다. 이 경우 React Query는 캐시된 데이터를 업데이트하고 관련 컴포넌트를 리렌더링합니다. 이 방법은 React Query의 간편한 API를 활용하여 데이터를 수정할 수 있는 장점이 있습니다. 반면에 Redux Toolkit을 사용하여 상태 관리를 할 경우, user 정보를 Redux 상태로 등록하고 dispatch를 사용하여 수정 API를 실행하고 상태를 업데이트할 수 있습니다. Redux Toolkit은 더 복잡한 애플리케이션의 상태 관리에 적합하며, 여러 컴포넌트에서 공유해야하는 전역 상태를 효과적으로 관리할 수 있습니다. 따라서 React Query와 Redux Toolkit을 함께 사용할 때, 데이터를 수정하고 상태를 업데이트하는 방법은 프로젝트의 특성과 선호하는 개발 방식에 따라 선택할 수 있습니다. 프로젝트의 구조와 요구사항을 고려하여 어떤 방법을 사용할지 결정하면 됩니다.

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!