나는 프론트로만 일한지 3년하고 6개월정도 지난것 같다.
그런데 이제서야 제목처럼 Redux와 ContextAPI에 대해 이해하게 되었다. 그 부분을 나중에 까먹을지 모르니 정리해본다.
- 나는 리덕스를 그저 Prop Drilling 문제를 해결하기 위해 사용했었다.
(그리고 버렸다.)
- 그러나 리덕스(또는 다른 상태관리 라이브러리)의 그 기능은 부과적인것에 불과하고 본질적인 목적은 상태에 대한 비즈니스 로직을 UI 컴포넌트와 분리하기 위함이였다.
- ContextAPI야 말로 순수하게 Prop Drilling만을 해결해주기 위한 툴이다.
- 리덕스 역시 내부적으로 ContextAPI를 사용했었고, 그래서 Prop Drilling도 해결해주었다.
- 리덕스(정확하게 react-redux)는
"너 상태관리 UI컴포넌트에서 어지럽게하지 말고, 따로 공간 만들어줄테니까, 순수함수로, 어? 깔끔허게 비즈니스 로직을 분리해서 관리해라!
action -> dispatch -> selector(정확히 맞는지 기억나지 않지만 이게 중요한게 아니다.)
이 패턴 강제해줄테니까 고맙지?" 이거였고
- 그저 MobX는 좀더 자유롭게, 양방향인거였고(물론 써보질 않아서 더 다양하고 높은 철학이 있을지 모른다.)
- zustand 역시 "훨씬 높은 자유도로 너가 알아서 규칙 세워서 상태에 대한 비즈니스로직을 분리해!, 반복되는 보일러플레이트코드는 싹 걷어줄테니." 정도 이겠다.
- 그래서 어떤 툴을 사용하던, 결국 너가 비즈니스 로직을 분리해낼 능력이 없다면 돼지목에 진주 목걸이일 뿐이다.
- 그래서 결국 중요한건 어떤 툴을(Context API, Redux, Zustand) 사용하는게 중요한게 아니라, 기술명세서에서 도메인을 파악하고, 비즈니스 로직을 만들고, 이를 클래스로 하던 함수로 하던 그냥 객체로 하던 능력에 맞게 바꾸는 능력을 기르는게 먼저인거 같다.
- 어떻게 비즈니스 로직을 보는법을 알 수 있을지 더 찾아보겠다. 부디 빠른시일안에 찾을 수 있으면 좋겠다.