개발자
안녕하세요 리덕스에 대해 여쭤볼게 있습니다. 리덕스를 사용하면 state를 부모에서 자식으로 계속 내려주는 방법으로 하지 않고 필요한 컴포넌트에 바로 state를 전달 할 수 있다...라고 이해를 했습니다. 여기서 궁금한점이 예를 들어 데이터를 저장하는 state도 있고 모달창을 할때 사용하는 state도 있을텐데 모든 state를 리덕스로 만드는건가요? 아니면 어떤 state만 리덕스로 저장해서 사용하면 되는지 쉽게 알려주시면 너무 감사드리겠습니다.
답변 1
부모에서 자식으로 계속 내려주는 상태를 지역 상태, 리덕스 등을 이용하여 필요한 곳에서 바로 전달할 수 있는 상태를 전역 상태라합니다. 각 상태는 상황에 따라 적절하게 사용하시면 됩니다. 즉 질문에 대답하자면 '어떤 state만 리덕스로 저장해서 사용'하시면 됩니다. 그럼 이제 '어떤'에 해당하는 상태가 무엇인지 구분할 수 있는 능력이 필요하겠네요. 여러가지 기준이 있을 수 있겠습니다. 말씀하신대로 부모, 자식 컴포넌트 사이가 너무 멀어 계속 전달(이를 props drilling이라 합니다.)하는 게 번거롭다면 전역 상태를 사용하는 게 좋은 옵션이 될 수 있습니다. 한편 용어의 뜻 그대로 어떤 상태가 지역적으로 필요한 값이라면, 즉 특정 영역에만 국한된 관심사를 갖고 있다면 지역 상태, 여러 영역에 걸쳐 쓰일 예정이라면 전역 상태를 이용하는 편이 낫겠죠. 예를 들어, 특정 페이지에서의 옵셔널하게 렌더링되는 특정 컴포넌트에 대한 visible 여부는 지역 상태로 관리하는 게 보통 나을 겁니다. 반면 모든 페이지가 로그인 여부에 따라 다른 화면을 보여줘야 한다면 로그인 여부는 전역 상태로 관리하는 게 낫겠죠.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 07월 11일
리덕스를 사용하는 주된 이유 중 하나는 어플리케이션 전체에서 공유되는 state를 쉽게 관리하고자 하는 것입니다. 그래서 일반적으로 리덕스에는 여러 컴포넌트가 참조하거나 변경할 수 있는 state를 보관합니다. 예를 들어 사용자 정보, 앱 설정, API 응답과 같은 데이터 등이 전역 state에 포함될 수 있습니다. 이런 종류의 state들은 많은 컴포넌트에서 접근할 수 있어야 하므로 리덕스와 같은 상태 관리 도구를 통해 관리하는 것이 효율적일 수 있습니다. 반면에 모달창의 열림/닫힘 상태나 인터렉티브 폼의 입력값과 같은 UI state는 대개 한두 개의 컴포넌트 내에서만 필요한 경우가 많습니다. 이러한 경우, 해당 컴포넌트의 로컬 상태로서 React의 `this.setState`나 hook을 사용해서 관리하는 것이 더 간결하고 직관적일 수 있습니다. 그러므로 모든 state를 리덕스로 만드는 것이 아니라, 애플리케이션이 어떤 데이터를 어디서 필요로 하는지에 따라 선택적으로 리덕스로 관리하면 됩니다. 일반적으로는 글로벌하게 접근해야 하는 state를 리덕스로 관리하고, 컴포넌트 내부에서만 필요한 state는 로컬 상태로 관리하는 것이 좋습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!