vue.js

02-1.1 뷰 라이프사이클

주노팍 2021. 8. 14. 19:00
반응형

라이프 사이클 단계를 크게 나누면

 

1. 인스턴스의 생성

2. 생성된 인스턴스를 화면에 부착

3. 화면에 부착된 인스턴스의 내용이 갱신

4. 인스턴스가 제거되는 소멸

 

위와 같이 4단계로 이루어진다.

그리고 각 단계 사이에 사이클 속성 created, mounted, updated 등이 실행된다.

 

beforeCreated

 - 인스턴스가 생성되고 나서 가장 처음으로 실행되는 라이프 사이클 단계

 - data 속성과 methods 속성이 아직 인스턴스에 정의되어 있지 않고, 곰과 같은 화면 요소에도 접근할 수 없다.

 

created 

 - beforeCreated 라이프 사이클 단계 ㄷ음에 실행되는 단계

 - data 속성과 methods 속성이 정의 되었기 때문에 this.data 또는 this.fetchData()와 같은 로직들을 이용하여

   data 속성과 methods 송석에 정의된 값에 접근하여 로직 실행 가능

 - 다만 아직 인스턴스가 화면 요소에 부착되기 전이기 떄문에 template 속성에 정의된 돔 요소로 접근 할수 없다.

 - data 속성과 methods 속성에 접근할 수 있는 가장 첫 라이프 사이클 단게이자 컴포넌트가

   생성되고 나서 실행되는 단계 이기 떄문에 서버에 데이터를 요청하여 받아오는 로직을 수행하기 좋다.

 

beforeMount

 - created 단계 이후 template 속성에 지정한 마크업 속성을 render() 함수로 변환한 후 el 속성에 지정한

   화면 요소(돔)에 인스턴스를 부착하기 전에 호출되는 단계

 - render()함수가 호출되기 직전의 로직을 추가하기 좋다. 

 - render() : 자바스크립트로 화면의 돔을 그리는 함수

 

mounted

 - el 속성에서 지정한 화면 요소에 인스턴스가 부착되고 나면 호출되는 단계

 - template 속성에 정의한 화면 요소(돔)에 접근할 수 있어 화면 요소를 제어하는 로직을 수행하기 좋은 단계

 - 다만 인스턴스가 돔에 부착되자마자 바로 호출되기 때문에 하위 컴포넌트나 외부 라이브러리에 의해 추가된

   화면 요소들이 최종 HTML 코드로 변환되는 시점과 다를 수 있다.

 - 변환되는 시점이 다를 경우 $nextTick() API를 활용하여 HTML 코드로 최종 파싱될 땎지 기다린 후

   돔 제어 로직을 추가한다.

 

beforeUpdate

 - * 데이터 관찰 : el 속성에서 지정한 화면 요소에 인스턴스가 부착되고 나면 인스턴스에 정의한 속성들이

                       화면에 치환된다. 치환된 값은 뷰의 반응성(Reactivity)을 제공하기 위해 $watch속성으로 감시한다.

 - 뷰의 반응성 : 뷰의 특징 중 하나이며 코드의 변화에 따라 화면이 반사적으로 반응하여 빠르게 화면을 갱신하는 것

 - beforeUpdate는 관찰하고 있는 데이터가 변경되면 가상 돔으로 화면을 다시 그리기 전에 호출되는 단계

 - 변경 예정인 새 데이터에 접근할 수 있어 변경 예정 데이터의 값과 관려된 로직을 미리 넣을 수 있다.

 - 만약 값을 변경하는 로직을 넣더라도 화면이 다시 그려지지는 않는다.

 

updated

 - 데이터가 변경되고 나서 가상 돔으로 다시 화면을 그리고나면 실행되는 단계

 - 데이터 변경으로 인한 화면 요소 변경까지 완료된 시점이므로 데이터 변경 후 화면 요소 제어와 관련된 로직을

   추가하기 좋은 단계

 - 이 단계에서 데이터 값을 변경하면 무한 루프에 빠질 수 있기 때문에 값을 변경하려면

   computed, watch와 같은 속성을 사용할 것

 - 따라서 데이터 값을 갱신하는 로직은 가급적 beforeUpdate에 추가하고, updated에서는 변경 데이터의

   화면 요소(돔)와 관련된 로직을 추가하는게 좋다.

 

beforeDestory

 - 뷰 인스턴스가 파괴되기 직전에 호출되는 단계

 - 이 단계에서는 인스턴스에 접근할 수 있어, 뷰 인스턴스의 데이터를 삭제하기 좋은 단계

 

destroyed

 - 뷰 인스턴스가 파괴되고 나서 호출되는 단계

 - 인스턴스에 정의한 모든 속성이 제거되고 하위에 선언한 인스턴스들 또한 모두 파괴된다.

 - 

반응형