Vue watch, created, computed, 생명 주기 - devhaeyeon/vueExample GitHub Wiki
watch // created
컴포넌트 인스턴스가 떠있는 상태에서 url에 따라서 뭔가 변화를 줘야한다면 watch /// 인스턴스가 뭐에 의해서라도 사라지면 created 에서 해줘도 무방
동일한 컴포넌트 인스턴스가 재사용된다는 것입니다. 두 라우트 모두 동일한 컴포넌트를 렌더링하므로 이전 인스턴스를 삭제 한 다음 새 인스턴스를 만드는 것보다 효율적입니다. 그러나 이는 또한 컴포넌트의 라이프 사이클 훅이 호출되지 않음을 의미합니다.
https://vuejs.org/v2/api/#vm-watch https://kr.vuejs.org/v2/api/index.html#watch http://hong.adfeel.info/frontend/%EA%B3%84%EC%82%B0%EB%90%9C-%EC%86%8D%EC%84%B1computed-%EA%B0%90%EC%8B%9C%EC%9E%90watch/
방법 1)
watch: {
‘$route’() { // $route 객체를 감시. 변경되면 실행되게 하는 함수
this.fetchData() // fetchData함수 실행. $route변경 때마다 백엔드API호출 되도록
}
},
created() { // 컴포넌트 생성시
this.fetchData()
}
방법 2)
watch: {
'$route': { // 함수가 아닌 객체로 설정하기
handler: 'fetchData', // 위와 동일
immediate: true // 즉시 실행하므로 created() { this.fetchData() }를 따로 하지 않아도 됨
}
}
카드에서 created 써서 url로 변경하면 변경은 되는데 ( 보더까지 전부 변경 ) router-link 로 클릭해서 들어갈땐 안되네유 음 이건 아마 a 태그 기본 기능 막고 내부 로직 태워서?
{ path: 'c/:cid', component: Card } 여기서 컴포넌트 하나만 쓰죠
카드에서 created 쓰고 싶으면 { path: 'c/1', component: Card1 }, { path: 'c/2', component: Card2 }
watch : 데이터 변경에 대한 응답으로 비동기식 또는 시간이 많이 소요되는 조작을 수행하려는 경우에 가장 유용합니다. 비동기 연산 (API 엑세스)를 수행하고, 우리가 그 연산을 얼마나 자주 수행하는지 제한하고, 최종 응답을 얻을 때까지 중간 상태를 설정할 수 있습니다. 계산된 속성은 이러한 기능을 수행할 수 없습니다.
내부가 변경될때마다 실행 api에서 불러온 데이터 변경시 자동변경되게 씀.
created : 뷰 인스턴스 생성될때 한번 호출
computed
https://kr.vuejs.org/v2/guide/computed.html https://kr.vuejs.org/v2/api/index.html#computed
라우터, 동적 라우터 매칭
https://router.vuejs.org/kr/guide/essentials/navigation.html
https://router.vuejs.org/kr/guide/essentials/dynamic-matching.html