nuxt-link 监听路由变化,会执行多次

<template>
  <div>
    <div>
      <nuxt-link class="test" :to="{ path: '/testNuxtLink/1' }" :key="'a'">首页</nuxt-link>
      <br />
    </div>
    <div>
      <nuxt-link class="test" :to="{ path: '/testNuxtLink/2' }" :key="'b'">2</nuxt-link>
      <br />
    </div>
    <div>
      <nuxt-link class="test" :to="{ path: '/testNuxtLink/3' }" :key="'c'">3</nuxt-link>
    </div>
    <div>
      <nuxt-link class="test" :to="{ path: '/testNuxtLink/4' }" :key="'d'">4</nuxt-link>
    </div>
    <p>this routeParam: {{ routeParams }}</p>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        routeParams: this.$route.params
      };
    },
    watch: {
      $route: {
        handler: function(val, oldVal){
          console.log(val.params);
          Object.assign(this.routeParams, val.params)
        },
        // 深度观察监听
        deep: true
      }
    }
  };
</script>

当分别点击2,3,4,首页时,会有如下输出

{0: "/2"}
testNuxtLink.vue?f05a:33 {0: "/2"}
testNuxtLink.vue?f05a:33 {0: "/3"}
testNuxtLink.vue?f05a:33 {0: "/3"}
testNuxtLink.vue?f05a:33 {0: "/3"}
testNuxtLink.vue?f05a:33 {0: "/3"}
testNuxtLink.vue?f05a:33 {0: "/4"}
testNuxtLink.vue?f05a:33 {0: "/4"}
testNuxtLink.vue?f05a:33 {0: "/4"}
testNuxtLink.vue?f05a:33 {0: "/4"}
testNuxtLink.vue?f05a:33 {0: "/4"}
testNuxtLink.vue?f05a:33 {0: "/4"}
testNuxtLink.vue?f05a:33 {0: "/1"}
testNuxtLink.vue?f05a:33 {0: "/1"}
testNuxtLink.vue?f05a:33 {0: "/1"}
testNuxtLink.vue?f05a:33 {0: "/1"}
testNuxtLink.vue?f05a:33 {0: "/1"}
testNuxtLink.vue?f05a:33 {0: "/1"}
testNuxtLink.vue?f05a:33 {0: "/1"}
testNuxtLink.vue?f05a:33 {0: "/1"}

图片描述

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