1) 의존성을 관리하는 ReactSharedInternals.js와 shared 패키지
- ReactSharedInternals.js는 외부에서 주입 받길 기다리는 모듈들의 대기소 같은 곳이다
- ReactCurrentDispatcher 또한 여기에서 훅을 주입 받길 기다린다
- shared는 모든 패키지가 공유하는 공통 폴더의 역할을 한다
- 그 중 코어의 출입구 역할을 하는 모듈이 shared의 ReactSharedInternals.js이다
- reconciler 역시 훅을 주입할 때 Shared 패키지를 통해서 동적으로 구현체를 주입한다
- 훅이 개발자에게 도달되는 흐름
- reconciler → shared/ReactSharedInternal → react/ReactSharedInternal → react/ReactCurrentDispatcher → react/ReactHooks → react → 개발자
1 - 2 Hook 구현체 주입
- 훅 주입은 reconciler/renderWithHoks()에서 이루어진다
- 컴포넌트 호출 또한 여기서 한다
- 이 함수는 Render phase에서 실행된다
memoizedState가 null이 아니라면 해당 컴포넌트는 마운트가 아닌 업데이트 상태이며
훅 리스트 또한 이미 존재함
이를 이용하여 마운트 여부를 확인함
거기에 맞게 훅 구현체를 다르게 사용함
즉 컴포넌트가 마운트 될 때 혹은 마운트용 구현체를 사용할 것이고
그 이후에는 컴포넌트가 언마운트 되지 않는 한 계속해서 업데이트용 구현첼르 사용하게 된다
훅은 어떻게 생성 되는가?