개발자
안녕하세요. 다들 고생이 많으십니다. 코린이 질문하나 합니다. 제가 리액트 프로젝트를 진행하면서 처음에는 컴포넌트에 props drilling을 이용해 프로젝트를 만들었습니다. 만들고 나니 뭔가 나중에 이 프로젝트를 볼 때 부모 컴포넌트를 찾아가며 코드를 파악해야 하는게 좀 아쉽다고 생각하여 전역상태 + 커스텀 훅으로 변경하였습니다. 그런데 변경하고 나서 코드는 확실히 깔끔해지고 알아보기도 쉽긴 한데.. 콘솔을 찍어보면 처음 구현했던 것 보다 훨씬 많이 찍힙니다. 랜더링이 더 많이 일어나는거 같은데.. 이럴경우 그냥 처음처음 props drilling를 사용하는게 나을까요?
답변 2
상태 관리에 대해서 고민하고 계시군요. 일단 저라면 잦은 렌더링을 유발하는 원인이 무엇인지를 찾아볼 것 같습니다. 상태를 전역 상태로 변경하셨다면, 상위 컴포넌트 혹은 React 외부 스코프에서 상태를 관리하고 계실텐데요. 말씀하신 문맥으로는 이 상태를 필요한 하위 컴포넌트에 전달하는 과정에서 불필요한 렌더링이 발생하는 것으로 보입니다. 이 부분을 React Dev Tools의 Profiler 또는 `console.log`를 찍어보면서 파악해보시면 좋을 것 같습니다. 원인이 파악되었으면, 하위 컴포넌트에 상태를 전달하는 과정 중간에 있는 컴포넌트들이 불필요한 렌더링을 일으키지 않도록 수정해야 합니다. 이 때 해결 방법은 전역 상태를 어떤 방식으로 관리하고 있느냐에 따라 달라집니다. Memoization을 해야 할 수도 있고, Zustand 같은 상태 관리 라이브러리를 사용 중이시면 라이브러리 공식 문서에 리렌더링을 방지하는 방법에 대한 내용을 참고하시면 됩니다. 어떤 값은 props drilling이, 어떤 값은 전역 상태로 관리하는 게 유리할 수도 있습니다. 이 부분은 정답이 없기 때문에 코드를 작성하시면서 스스로 판단하셔야 합니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 06월 27일
먼저, React에서 데이터를 컴포넌트 간에 전달하는 문제는 매우 고전적인 문제입니다. Props drilling은 작은 프로젝트나 단방향 데이터 흐름이 명확한 경우에는 잘 작동하지만, 대형 프로젝트에서는 상태를 추적하고 관리하기 때문에 복잡성이 증가할 수 있습니다. 전역상태 관리 라이브러리(예: Redux, MobX)와 커스텀 훅 사용은 이런 복잡성을 줄이려는 시도입니다. 이들은 상태 변경을 한 위치에서 관리하여 애플리케이션의 다른 부분에 자동으로 반영되도록 합니다. Render 수가 증가하는 문제는 효율적인 상태 업데이트 및 최적화 기법을 사용함으로써 해결할 수 있습니다. 예를 들어, `React.memo`, `useMemo` 또는 `useCallback` 등을 사용하여 불필요한 리렌더링을 줄일 수 있습니다. 결국 어느 방식을 선택할 것인지는 프로젝트의 규모, 구조, 필요성 등 여러 요소를 고려해야 합니다. 유지 관리와 가독성 면에서 전역 상태 관리가 우월하지만 성능 최적화에 신경을 써야합니다. 반면, props drilling은 상태 관리의 복잡성이 높아질 수 있지만, 불필요한 리렌더링 문제는 적을 수 있습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!