개발자

리액트에서 어떤 걸 전역상태로 관리해야 하고, 어떤 걸 하지 말아야 할까요?

2024년 03월 22일조회 127

단순히 props drilling이 너무 과도해지거나 상태를 공유하기 힘든 상황일 때 협의를 통해서 사용하면 될지, 아니면 의미를 생각해서 전반적으로 전역으로 관리되어야 할 필요가 있는 데이터를 전역 상태로 관리해야 할까요? 이번에 공부 용으로 사이드 프로젝트를 진행하면서 자식 컴포넌트의 상태를 부모,조상으로 전달해줘야 하는 복잡한 컴포넌트가 하나 만들어지게 되었습니다.. (하나의 필드 안에 검색, 필터,select 등등이 있고 이를 동적으로 생성할 수 있는...) 상태를 공유할 수 있는 다양한 패턴을 통해서 해결이 가능하지만, 구현의 복잡도가 훨씬 높아진다는 생각을 했는데 이럴 때도 전역 상태를 사용해도 괜찮을까요? 사실 전역 상태로까지 관리할 데이터인가?에 대해서는 아니라고 생각하지만 사실 전역 상태라는 것이 구현의 복잡도를 줄여준다는 측면에서 만들어 진 것이라고 생각해서 내가 불편하면 사용하는게 맞지 않나? 라는 생각이 드네요 아니면 아예 구현 부분에서 잘못 되었던 걸까요? 컴포넌트 분리에만 초점을 맞추다 보니 이 점을 많이 신경쓰지 못한 것 같습니다..

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

답변 1

박정환님의 프로필 사진

어찌 구현하던 자유입니다. 부모 자식 관계가 너무 깊어진 상태에서 값을 관리하고자 할때는 context를 사용하기도 합니다. 물론 context도 이점과 약점이 있습니다. 이를 대체하기 위한 방법도 여러가지 있습니다. 이정도만 우선 말씀드리겠습니다.

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

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

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 03월 22일

전역 상태 관리는 주로 앱 전반에서 공유되어야 하는 데이터를 관리하는데 사용됩니다. 예를 들어 사용자 정보, 테마 설정, 선호 언어 등이 여기에 해당합니다. 하지만 모든 상태를 전역으로 만들면 컴포넌트 간의 의존성이 생기고 앱의 복잡도가 높아집니다. 따라서 가능한 한 지역(로컬) 상태로 유지하는 것이 좋습니다. 리액트에서 어떤 상태를 전역으로 관리할 것인지 결정할 때 다음과 같은 기준을 고려해보세요: 1. 여러 컴포넌트에서 동일한 데이터를 공유해야 하는가? 2. 그 데이터가 애플리케이션의 여러 부분에서 업데이트되는가? 3. props drilling이 너무 복잡해져 가독성과 유지 보수성에 문제가 되는가? 예시로, 사용자 인증 정보나 테마 설정처럼 거의 모든 컴포넌트에서 참조하거나 업데이트 되야하는 상태는 전역 상태로 관리하면 좋습니다. 반대로 한 컴포넌트 내에서만 사용되거나, 몇몇 하위 컴포넌트에만 전달되는 상태는 굳이 전역으로 관리할 필요 없이 로컬 상태로 관리하면 됩니다. 또한 시스템의 복잡도를 줄이고 코드의 가독성을 높이기 위해 가능한 한 props drilling을 최소화하는 것이 좋습니다. 따라서 실제로 상황에 따라 유동적으로 판단하며, 전역 상태와 로컬 상태를 적절하게 분배하는 것이 중요합니다.

목록으로

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