Q. 질문
하단 네비게이션 바를 hoc를 통해 컴포넌트를 감싸 노출하고 있습니다.
/* eslint-disable react/display-name */ /* eslint-disable react-hooks/rules-of-hooks */ import NavigationBottom from "../components/NavigationBottom"; function WithNavigation<P extends object>( Component: React.ComponentType<P>, isShowNavigation: boolean = false, ) { return function IsNavigated(props: P) { if (isShowNavigation) { return ( <> <NavigationBottom /> <Component {...props} /> </> ); } return <Component {...props} />; }; } export default WithNavigation;
여기서 든 의문은 뒤로가기 버튼이 있는 스택 네비게이션 컴포넌트도 있어서 이 부분도 이 hoc 안에 넣어 네비게이션을 함께 처리하는게 어떤가 싶은 생각이 들었는데 좋은 생각인지 모르겠습니다!
이런 생각이 든 이유는 하단 네비게이션 바는 hoc를 통해 렌더링 여부를 결정 짓는데 스택 네비게이션 컴포넌트는 컴포넌트만 import 해와 사용하는게 로직적인 부분이 통일되지 않은 것 같기도 하고, 같은 네비게이션 성격이니까 한번에 처리해도 되지 않을까? 로 생각의 흐름이 이어진 것 같습니다.
마지막으로 hoc를 어떻게 잘 이용하면 좋은지,,? 멘토님의 생각이나 실무 경험이 궁금합니다!
A. 멘토님 답변
컴포넌트를 어느 덩어리까지 결합시킬것인가에대한 질문같은데요. 정답은 없습니다.
네비게이션이란 영역을 정의할때 뒤로가기까지를 하나의 큰 덩어리라고 생각한다면, 묶는게 더 좋겠죠?
저는 17,18이후의 최신 리액트에서 hoc를 그다지 선호하지않습니다.
hoc의 재사용성을 리액트훅을 통해 처리할수있고요. hoc는 컴포넌트의 계층이 깊어져 디버깅을 어렵게 만들더라고요.
그래서 저는 훅을 더 선호합니다.
하지만 그렇다고 나도저사람이저랬으니 Hoc안써야지~ 하시진말고요 ㅎㅎ 지금은 공부하는 단계이니깐 hoc를 써보면서 재사용성을 높이는 방법에대해서 고민해보기도하고 오~~이런거군~~ 해보시기도 하세요.
많이 써보세요.
그리고 hook도 많이 써보세요.
그러다보면 내 취향이란것도 생기고, 아 난 이런걸 더 편하게 느끼는구나. 싶기도합니다. 많이 삽질해봐야 느끼는것도 많아집니다.