React Hook을 사용하기 때문에 크게 신경쓰지 않았지만 생명주기를 알고 모르고의 차이는 크기 때문에 해당 내용에 대해서 정리
모든 컴포넌트에는 각각의 생명주기가 존재하고 각 생명주기에 맞는 메서드 들이 있고, 훅이 나오기 전에는 라이프 사이클을 관리하기 위해서 클래스형 컴포넌트에서 아래와 같이 분류해서 사용했습니다.
constructor()
getDerivedStateFromProps(nextProps, prevState)
render()
componentDidMount()
getDerivedStateFromProps(nextProps, prevState)
shouldComponentUpdate()
render()
getSnapshotBeforeUpdate()
componentDidUpdate()
자세한 내용은 리액트 공식문서에서 확인 가능
리액트 컴포넌트는 각각 [Mount] → [Update] → [Unmount]의 과정을 거치게되며,
라이프 사이클을 다룬다는 것은 위와 같은 과정들을 개발자가 통제한다는 것을 의미합니다.
리액트를 사용할 때 클래스는 라이프 사이클 메서드를 함수형은 훅을 사용
훅을 사용하면서 부터 라이프 사이클 메서드가 아닌 로직을 기반으로 코드를 작성하기 때문에 크게 와닿는 내용은 아지만 훅을 도입하게 된 이유를 살펴보면 도움이 될듯하다.
리액트 공식문서에서 조차 훅을 권장하는데, 클래스 기반 컴포넌트 사용을 지양하고자 한다는 의미로 앞서 언급한 내용처럼 라이프 사이클 메서드 기반이 아닌, 로직 기반으로 코드를 작성할 수 있기에 컴포넌트를 함수 단위로 얼마든지 작게 분류가 가능하다는 이점이 존재한다.
이러한 훅을 사용하기 위해서는 지켜야할 규칙이 있습니다.
함수형 컴포넌트에서만 훅 호출을 해야하고 일반적인 JS 함수에서는 훅을 호출해서는 안됩니다.
또한 컴포넌트 내의 최상위에서만 훅을 호출해야합니다.
컴포넌트 내의 반복문, 조건문 등.. 내에서 훅을 실행하면 안되며, 이러한 규칙을 지킨다면 컴포넌트 렌더링 시에 항상 동일한 순서로 훅이 호출되는 것을 보장합니다.