컴포넌트가 마운트 됐을 때 (처음 나타났을 때), 언마운트 됐을 때 (사라질 때), 그리고 업데이트 될 때 (특정 props가 바뀔 때) 특정 작업을 처리
첫번째 파라미터로 함수, 두번째 파라미터로 배열(deps)을 전달한다.
참고로 리액트 컴포넌트는 기본적으로 부모컴포넌트가 리렌더링되면 자식 컴포넌트 또한 리렌더링이 됩니다.
memo = memoized
주로 성능 최적화를 위해 사용.
첫번째 파라미터로 함수, 두번째 파라미터로 배열(deps)를 넣는다.
deps에 들어간 값이 바뀔 경우에만 첫번째 파라미터로 지정한 함수를 호출한다.
값이 바뀌지 않았을땐 이전에 연산한 값을 재사용한다.