Usually you could use mounted() and beforeDestory() to detect nuxt page enter and leave, but it is not reliable if you use nuxt component keep-alive as the page component is cached and not created/destroyed each time.
Alternative would be
<script>export default { data() { item: {}, }, async fetch() { const id = vm.$route.params.id // load data this.item = ... }, beforeRouteEnter(to, from, next) { next(vm => { console.log('beforeRouteEnter', vm.$route, vm.item.name) }) }, beforeRouteUpdate(to, from, next) { console.log('beforeRouteUpdate', this.$route, this.item.name) next() }, beforeRouteLeave(to, from, next) { console.log('beforeRouteLeave', this.$route, this.item.name) next() }}</script>beforeRouteEnter: called first time the page is entered (e.g./aboutto/page/123), with the current route info,this.itemis empty as fetch is not called yet.beforeRouteUpdate: called when the page changed (e.g./page/123to/page/555), where the route info is the previous page,this.itemis from previous page.beforeRouteLeave: called when the page exist (e.g./page/123to/about), where the route info is the previous page,this.itemis from previous page.