상위 컴포넌트에서 router path가 변경되어 하위 컴포넌트가 변경될 때 접근로그를 기록하기 위해서, 컴포넌트 내에서 router의 변경을 감지할 필요가 있었다.
상위 컴포넌트의 watch 함수에 $route를 정의함으로써 router-view가 변경될 때마다 감지할 수 있었다.
watch: {
$route(to, from) {
// .....
}
}
- 상위 컴포넌트 : DefaultContainer
- 하위 컴포넌트 : LoggingCenterContainer, LoggingCenterAccessLog, LoggingCenterActionLog
router/index.js
/* router/index.js */
const routes = {
path: '/lc',
component: DefaultContainer,
children: [
{ path: 'container', component: LoggingCenterContainer },
{ path: 'access-log', component: LoggingCenterAccessLog },
{ path: 'action-log', component: LoggingCenterActionLog },
],
}
DefaultContainer.vue
/* DefaultContainer.vue */
<template>
<div class="app">
<div class="container-fluid">
<router-view></router-view>
</div>
</div>
</template>
<script>
export default {
{ ... },
watch: {
$route(to, from) {
if (to.path != from.path) {
/* router path가 변경될 때마다 서버로 접근로그를 저장한다. */
axios.post("/lc/access-log");
}
}
}
}
</script>
'생계유지형 개발자 > JS Framework' 카테고리의 다른 글
scss 파일에서 url 오류날 때 (@import와 src 사용하기) (0) | 2021.07.22 |
---|---|
[Vue] Vue CDN으로 사용 시 this가 window를 가르킬 때 (0) | 2021.03.24 |
[Thymeleaf] 인라인 자바스크립트에서 파라미터 ${...} (0) | 2020.06.08 |
[vue] warning: component lists rendered with v-for should have explicit keys (0) | 2020.01.22 |
[vue] bootstrap-vue의 b-table 사용할 때 필드 사이즈 조정 (0) | 2020.01.16 |