강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

윤동호님의 프로필 이미지
윤동호

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

상태 관리에 대해 질문드립니다 !

작성

·

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과 연동해서 사용하라고 말씀 하셨는지 이해가 약간은 될 것 같네요 !

답변 항상 감사드립니다.

윤동호님의 프로필 이미지
윤동호

작성한 질문수

질문하기