- [개발자의품격][부트캠프][1기][20차시][21차시] Vue.js #8 | Lifecycle Hooks2022년 03월 11일 17시 46분 55초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
Lifecycle Hooks 순서에 따라 뷰가 자동으로 함수들을 호출한다. 어느 시점에 어떤 데이터를 조회할 것인지 설계하느냐에 따라 체감 성능이 달라질 수 있다.
setup(composition api)
composition api는 Vue.js 3.0에서 밀고 있지만 아직까지는 실무에서 쓰지 않는 기능이다. data와 method를 각각 선언하는 option api 방식을 Vue.js 2.0까지 사용해 왔다. composition api는 새로운 방법으로 option api와 같은 기능을 구현한다. composition api는 각각 따로 존재하는 data와 method를 setup 안에서 관리하여 코드의 가독성을 높이고자 한다. 하지만 실무에서는 data와 method를 명확하기 구분하는 것이 익숙하고 편리하다는 입장이다.
화면 열릴 때 조회 수행
마운트 될 때 doSearch함수가 실행되게 한다.
mounted() { this.doSearch() },
Garbage Collection 대상 지정
자바스크립트는 Garbage Collection으로 자동으로 메모리를 정리한다. 하지만 배열 등과 같이 heap 메모리에 올라가 있는 값은 Garbage Collection이 자동으로 정리하기 어렵다. 이런 경우 unmounted에서 null을 할당하면 언마운트할 때 Garbage Collection이 메모리에서 정리해준다.
unmounted() { this.drinkList = null },
21차시 추가 내용
Lifecycle Hooks에서 주로 사용하는 것은 3개이다.
beforeCreate() {},
created() {},beforeMount() {},
mounted() {},beforeUpdate() {},updated() {},beforeUnmount() {},
unmounted() {}Lifecycle Hooks 시점을 고려하여 사용자가 당장 사용해야 하는 기능은 created에서 가져오게 하고, 그렇지 않은 경우(순서상 뒤에 있는 경우, 서버의 데이터가 무거운 경우 등)는 mounted에서 가져오게 하면 체감 성능이 올라갈 수 있다.
<script> export default { ... // setup() {}, beforeCreate() {}, // created되기 직전 created() {}, // data, props, components, watch, computed, methods 이런 모든 정보를 가지고 준비가 끝난 상태 beforeMount() {}, // mounted되기 직전(DOM이 랜더링 되기 직전). 가상 DOM 준비 끝난 상태로 추정됨 mounted() {}, // 실제 DOM이 랜더링이 끝난 상태 beforeUpdate() {}, // updated되기 직전 updated() {}, // data 변경이 일어난 경우. 화면과 연결된 경우 mounted도 함께 작동함 beforeUnmount() {}, // unmounted 직전 unmounted() {} // 컴포넌트를 빠져 나갈때 // methods: {} } </script>
컴포넌트를 빠져나갈 때 unmounted 처리를 하지 않으면 불필요한 트랜잭션이 계속해서 일어날 수 있다. 이에 대한 예로 setInterval 함수를 이용해 1초마다 'aaa'가 출력되게 하였다.
... data() { return { fnInterval: null } },
... mounted() { this.fnInterval = window.setInterval(() => { console.log('aaa') }, 1000) },
unmounted에 clearInterval 함수를 적용해 컴포넌트를 빠져나갈 때 트랜잭션을 멈추게 하였다. 이러한 처리를 하지 않으면 컴포넌트를 빠져나가도 트랜잭션이 무한으로 일어난다.
unmounted() { window.clearInterval(this.fnInterval) this.fnInterval = null // 가비지 컬렉션 대상 처리. heap 메모리에 올라가는 데이터(객체, 배열)의 경우도 unmounted에서 null 처리해주어야 리소스를 효율적으로 쓸수 있다. },
728x90반응형'영광의 시대! > 2022 개발자의 품격 부트캠프 1기' 카테고리의 다른 글
[개발자의품격][부트캠프][1기][21차시] Vue.js #10 | 전역 컴포넌트, 커스텀 디렉티브 (0) 2022.03.15 [개발자의품격][부트캠프][1기][21차시] Vue.js #9 | 재사용 컴포넌트 (0) 2022.03.14 [개발자의품격][부트캠프][1기][20차시] Vue.js #7 | 재사용 컴퍼넌트에 checkbox, radio button, custom event 적용 등 (0) 2022.03.10 [개발자의품격][부트캠프][1기][19차시] Vue.js #6 | 재사용 컴퍼넌트에 부트스트랩 적용 (0) 2022.03.07 [개발자의품격][부트캠프][1기][19차시] Vue.js #5 | 재사용 콤퍼넌트 (0) 2022.03.07 다음글이 없습니다.이전글이 없습니다.댓글