⚡ Props Drilling 문제 해결 및 케밥 메뉴의 유일성 보장 #76
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
작업 이유
작업 사항
동시에 여러 피드의 KebabMenuList를 펼칠 수 있는 문제 해결하기
리뷰어가 중점적으로 확인해야 하는 부분
발견한 이슈
Props Drilling 문제
Feed -> useSubmitReports까지 계속해서 props를 전달해줘야 하는 props drilling 문제가 발생
문제 분석
props drilling이란 상위 컴포넌트에서 하위 컴포넌트까지 props를 전달해주는 과정에서 중간 컴포넌트는 해당 props를 사용하지 않음에도 props를 받고, 전달해줘야 하는 것
=> 이로 인해 컴포넌간의 결합도가 증가하고, 유지보수성이 크게 저하하게 됨.
feedId
와onClose
메서드를 props로 계속해서 전달해주는 것은 맞지만, 전역 상태로 관리하기 애매한 부분이 존재하며 실제 전달의 역할을 하는 컴포넌트는 KebabMenu만 해당현재 구조를 확인해 보면 FeedKebabButton부터
feedId
와onClose
메서드가 전달되게 되는데 실제 중간 컴포넌트(전달의 역할을 하는 컴포넌트)라고 생각되는 컴포넌트는 KebabMenu입니다.KebabMenu 버튼은 현재 HideButton과 FeedReportsForm으로 props를 전달해주고 있습니다. FeedReportsForm의 경우에는 신고 모달창으로 모달 전역 상태로 관리가 가능한 부분이지만, HideButton은 모달 전역 상태라고 보기에는 힘들기에 또 다른 전역 상태를 두어 관리를 해야 할 것 같습니다.
개인적인 의견
만약 두 개의 전역 상태로 이를 관리한다면, 단 하나의 중간 컴포넌트 때문에 2개의 전역 상태를 두는 것은 오버헤드라고 생각합니다. 뿐만 아니라 너무 많은 전역 상태는 가독성을 저하시킬 수 있으며 잠재적인 위험을 불러일으킬 수 있다고 생각합니다.
그래서 제가 생각하기에는 해당 부분에서는 컴포넌트의 단위를 기능별로 쪼개서 발생한 문제일 뿐, Props Drilling이 크게 문제가 되는 상황은 아니라는 생각이 들어 기존 방법으로 가도 큰 문제가 되지 않을 것 같다고 생각합니다. 혹시 어떻게 생각하시나요?