티스토리 뷰

dev./web

[vue.js]라이프 싸이클 속성

그루아트 2019. 2. 10. 14:03

라이프 싸이클 속성: create              -> mount              -> update              -> destory

 beforeCreate-created   beforeMount-mounted   beforeUpdate-updated   beforeDestory-destoryed

1.beforeCreate: 첫 싸이클 시작 단계.

  -.전체 라이프 싸이클 단계의 첫번째임.

  -.template속성을 이용한 DOM과 같은 화면 요소에 접근안됨.       


2.created: 서버와 데이터 요청 및 전송 로직 수행 단계.

  -.data속성과 methods속성이 정의되어 있음. 

  -.template속성을 이용한 DOM과 같은 화면 요소는 아직 접근안됨.

  -.component가 생성되고 나서 실행되는 라이프 싸이클 속성 단계. 서버에 데이터를 요청하여 받아오는 로직을 수행하기 좋다.


3.beforeMount: DOM 변경 전 로직 수행 단계.

  -.template 속성에 지정한 마크업 속성을 render()함수로 변환한 후 el속성에 지정한 DOM에 인스턴스 부착전 호출.

  -.render()함수 호출전 로직을 추가하기에 좋다. render()함수는 자바스크립트로 화면의 DOM을 그리는 함수.


4.monted: 화면제어 로직 처리 단계.

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

  -.template 속성에 정의한 화면 DOM에 접근할 수 있어 화면 요소 제어하는 로직 수행하기 좋은 단계임.

    다만 DOM에 인스턴스가 부착 되자마자 호출되기에 하위 컴포넌트와 외부 라이브러리에 의해 추가된 화면 요소들이 

    최종 HTML코드로 변환되는 시점과 다를수 있다. 

    그렇기에 변환되는 시점이 다를 경우 $nextTick() API를 사용하여 html 코드로 파싱될 때까지 기다린 후 DOM제어 로직 추가.


5.beforeUpdate: 데이터 변경 감시 -> 화면 변경 전 수행 로직 처리 단계.

  -.el 속성에서 지정한 화면 요소에 인스턴스가 부착(mounted)되고 난 뒤 인스턴스에 정의한 속성들이 화면에 치환된다.

    치환된 값은 $watch속성으로 감시(데이터 관찰)

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

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

    변경된 값은 아직 화면에 다시 그려지지 않는다.


6.updated: 화면 변경 단계. 무한루프 조심.

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

    즉, 데이터 변경으로 인한 화면 요소 변경까지 완료된 시점

  -.데이터 변경후 화면요소 제어와 관련된 로직 추가. 

    단, 데이터 값의 변경에 따른 무한 루프에 빠질수 있기에 값을 변경하려면 computed, watch와 같은 속성을 사용해야 한다.

  -.데이터 값을 갱신하는 로직은 가급적이면 beforeUpdate에 추가, updated에서는 변경 데이터의 화면 요소와 관련된 로직을 

    추가.

    즉, 될수 있으면 직접적인 데이터 변경은 beforeUpdate에서, 변경된 데이터와 관련된 화면 변경은 updated에서 하도록 한다.

  -.변환되는 시점이 다를 경우 $nextTick() API를 사용하여 변환이 완료될때까지 기다렸다가 로직을 추가


7.beforeDestory: 인스턴스에 마지막 접근 가능 단계.

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

  -.아직 인스턴스에 접근은 가능하기에 뷰 인스턴스의 데이터를 삭제하기 좋은 단계.


8.destoryed:

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

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

'dev. > web' 카테고리의 다른 글

[CSS3] 머리말 디자인  (0) 2018.12.04
[CSS3]태그를 숨기는 3가지  (0) 2018.12.04
[CSS3]메뉴 만들기  (0) 2018.12.03
[css3] 선택자  (0) 2018.12.02
[html] meta 파일 설정  (0) 2018.11.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함