인프런 커뮤니티 질문&답변
상태 관리에 대해 질문드립니다 !
작성
·
294
0
항상 좋은 강의 감사드립니다.
현재 nodebird 프로젝트를 redux 대신 react-query과 recoil을 사용하여 리팩토링 해보았습니다.
제로초님의 경우 react-query와 redux-toolkit으로 나눠 client state와 server state를 분리하셨다고 들었습니다.
질문1.
저는 유저정보의 경우 상위 컴포넌트에서 server state 에서 받아온 후 client state의 넣어놓고 계속 사용하는 방식으로 진행해보았습니다.
유저정보(server state)를 처음 호출할 때 redux(저는 recoil 사용하였습니다)를 통하여 비동기로 받아와서 사용하는 것과
react-query로 server state(react-query)를 받아온 후 client state(recoil)에 넣어주는 것 어떤것이 맞는걸까요?
server state는 모두 react-query에 맡긴다고 생각하면 후자가 맞다고 생각하여 이렇게 진행하였는데 비효율적인 것 같다는 생각이 들었습니다...
질문2.
server state와 client state를 나누시는 이유는 위에 상황처럼 사용하기 위해서 인가요? 아니면 다른 이유가 있으신가요?
저는 컴포넌트에서 user 정보가 필요할 때마다 react-query로 호출하면 낭비가 일어나는 것 같아서 client state 용 recoil을 사용하였는데 이렇게 사용하는 것이 맞는지 의문이 들어서 질문드립니다 !
감사합니다 !
답변 1
1
1. 아무렇게나 하셔도 문제 없습니다. 문제가 안 생기면 문제가 없는 겁니다.
2. 저는 정확히 server/client로 나누는 게 아닙니다. 단순히 get한 데이터(react-query)와 그걸 가공해서 전역적으로 보관하고 있을 데이터(redux, recoil)로 나누는 겁니다.





전역적으로 계속 사용하면서 가공하여 보관할 데이터들만 추려서 recoil state에 넣어서 사용하면 될 것 같네요.
처음엔 react-query로만 다 관리가 가능할거라 생각했는데 왜 redux-toolkit과 연동해서 사용하라고 말씀 하셨는지 이해가 약간은 될 것 같네요 !
답변 항상 감사드립니다.