vue中watch无法监听路由

想实现点击导航菜单更改路由,并监听路由的name属性,改变高亮菜单选项
图片描述

现在点击能实现切换路由,但是无法触发App.vue或者Header.vue的watch

App.vue

<template>
  <v-app class="body">
    <Header></Header>

    <v-content>
      <router-view></router-view>
    </v-content>

  </v-app>
</template>

<script>
import Header from './components/Header.vue'
export default {
  components: {
    Header
  },

  watch: {
    $router: function(route) {
      console.log(route)
    }
  },
}
</script>

Header.vue

<template>

  <div class="nav-box">
    <nav class="center">
      <div class="nav-left">
        <div>
          <v-img 
            :src="require('@/assets/image/logo.png')" 
            aspect-ratio="1.7" 
            width="40px" 
            height="40px"
          ></v-img>
        </div>
        <div class="nav-list">
          <router-link :to="'/'">
            <div class="nav-item">首 页</div>
          </router-link>
          <router-link :to="'publicClass'">
            <div class="nav-item" :class="{active:active==='publicClass'}">公开课堂</div>
          </router-link>
          <router-link :to="'specialClass'">
            <div class="nav-item">专项课堂</div>
          </router-link>
          <router-link :to="'me'">
            <div class="nav-item">我的课程</div>
          </router-link>
        </div>
      </div>
    </nav>
  </div>
  
</template>
<script>
export default {

  data (){
    return {
      active: "publicClass"
    }
  },

  watch: {
    $router: function(route) {
      console.log(route)
    }
  },

  mounted: function() {
    console.log(this.$route)
  }
}
</script>
阅读 5.4k
2 个回答
watch: {
 '$route' (to, from) {
   // 逻辑
  }
}

vuetifyv-tabs组件不能解决你的需求吗?需要自己手写路由。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题