항해 3기 3주차 WIL

오세명·2021년 10월 3일
0

시간이 쏜살같다. 99일중에서 21일이 지난 시점에서 무엇을 공부하였는지 메모를 남겨보려고 한다.

Life Cycle에 대하여

항해 99는 기본적으로 스파르타코딩클럽에서 제공하는 강의 상품들을 참가자에게 제공하는 시스템으로 이루어져있다. 강의를 수강하는 것은 자유나, 적어도 이부분은 들어야 한다고 리미트를 정해주는 식이다. 나는 자바스크립트 관련 강의를 거의 수강해보질 않았고, 내가 상상속으로만 생각했던 테크닉을 강의에서 설명하는 듯 하여 기대를 많이 하였다. 실제로 수강을 하면서 많은 것을 얻었고, 긴 시간동안 강의를 녹화한 튜터님과 관련 스탭분들께 감사의 인사를 올린다. 하지만 강의를 수동적으로 소비하려고 하지는 않았다. 비판적인 태도로 강의를 보았기 때문에 여운이 많이 남는 부분이 있었다. Life Cycle에 대한 내용이다.


사실 나는 (이제 막 코딩을 시작한 사람들이 모두 그렇듯) 클래스형 컴포넌트로 개발을 해본적이 없다. 함수형 컴포넌트를 사용하라고 권장을 하였으며, 클래스형 컴포넌트의 라이프 사이클 메서드는 다른 위대한 프로젝트를 구경할 때만 확인하였다. 따라서 Hooks를 처음 배울 때 라이프사이클 메서드처럼 생각하려고 하지 않았다. 리액트 공식 문서에서도 Hooks를 라이프 사이클 '특징'을 연결시켜주는 함수라고 말했기 때문이다. 어떤 것과 그 특징을 이어받은 다른 것은 서로 같다고 볼 수 없지 않겠는가? useState를 통해 반환된 state는 클래스형 컴포넌트의 state와 성질이 조금 다른 것처럼, useEffect와 라이프 사이클 메서드의 몇 개를 연결시키는 멘탈모델이 과연 옳은지에 대해 생각을 많이 해보게 되었다.


강의에서는 리액트 공식 홈페이지에서 제공하는 '클래스형 컴포넌트의 라이프 사이클 메서드'로 함수형 컴포넌트의 생명주기를 설명한다. 하지만 나는 함수형 컴포넌트와 클래스형 컴포넌트는 추상적인 멘탈 모델만 서로 공유할 뿐 서로 다르게 동작한다고 생각한다. Donavon이 만든 hook-flow가 오히려 함수형 컴포넌트의 생명주기를 더 잘 설명하는게 아닐까? 생각이 들었다.

Hook에 대하여

Hook의 특징을 가장 잘 설명해준 영상은 바로 Hook을 처음 소개했을 때의 영상인 것 같다. HOC와 Render Prop과 같은 멋지지만 어려운 테크닉으로부터 벗어나서 캡슐화된 stateful한 로직을 작성하는 것이 당시까지만해도 꽤 sensitive하였던 것 같다. 많이 개발을 해보지 않았기 때문에, 더 많은 경험을 하고 Hook에대한 나의 느낌이 어떤지 글을 쓸 날이 왔으면 좋겠다. Dan이 말했던 useYourImagination() 처럼 말이다.

profile
오네명입니다.

0개의 댓글