오늘 공부하게 될 내용은 Vue의 생명주기와 vue.js에서 사용할 수 있는 callback함수인 nextTick에 대해 이야기하려고 한다.
생명주기란 인스턴스 상태에 따라서 호출할 수 있는 속성들을 이야기 한다. 그리고 그 속성마다 개발자가 추가한 커스텀 로직을 라이프 사이클 훅(life cycle hook)이라고 한다.

VueJS의 생명주기는 크게 Create, Mount, Update, Destory로 나눌 수 있다.
Create
- VueJS 라이프 사이클들 중 가장 먼저 실행
- 컴포넌트가 DOM에 추가되기 전이기 때문에 DOM에 접근하거나 this.$el을 사용할 수 없음
- DOM에 컴포넌트가 추가되기 전에 호출되기 때문에 서버 사이드 렌더링에서도 지원이 되는 훅이다.
$el옵션이란?
마운팅 포인트를 결정할 수 있는 Vue 컴포넌트에서 제공하는 옵션이다.new Vue({ el : '#app', data : {}, ...만약 template옵션이나 render함수가 없다면 지정된 DOM 요소 내부 내용이 렌더링 된다. 또, el옵션을 명시하지 않으면 컴파일이 중단된다. el옵션을 사용하는 대신 $mount옵션을 사용 할 수도 있다. $mount 옵션을 사용하면 마운트 시점을 늦출 수 있다.
서버 사이드 렌더링이란?
클라이언트가 서버에 매번 데이터를 요청하여 서버에서 처리하는 방식으로, 클라이언트의 요청이 들어올 때마다 매번 새로운 화면을 만들어서 제공한다.
여기까지가 Create의 생명주기이다. 다음은 Mount이다.
Mount
- 컴포넌트가 DOM에 추가될 때 실행되는 라이프 사이클 훅.
- 서버 사이드 렌더링을 지원하지 않는다.
- 렌더링이 될 때 DOM을 변경하고 싶을때 사용.
- 컴포넌트 초기에 data를 세팅해야한다면 create를 사용
nextTick이란?

Update
- 컴포넌트에서 사용되는 속성들의 변경되는 등... 컴포넌트 재 랜더링이 실행되었을 때 실행
- 컴포넌트가 재 랜더링 될 때, 변경 된 값으로 작업을 해야할 때 유용하게 사용
- 서버 사이드 렌더링 지원 x
Destory
- 컴포넌트가 제거 될 때 실행되는 라이프 사이클 훅
nextTick
갱신될 UI에 대해서 간헐적으로 DOM을 못찾는 상황가 비슷하다. 이런 현상이 일어나는 이유는 Javascript의 비동기로 처리되는 특성 때문이다.
https://hyeooona825.tistory.com/40
https://vuejs-kr.github.io/jekyll/update/2017/01/19/vuejs-nexttick-example/
el옵션 : https://handhand.tistory.com/251