Vue动态路由的坑点

对于动态路由/user/:name,组件为 User

操作 1:从其他页面跳转到/user/duke
操作 2:从/user/duke跳转到/user/lemon
操作 3:从user/lemon跳转到/user/duke

操作 2 和 3 时组件User会被复用,组件的生命周期函数都不会被触发,这就意味着我们无法修改组件的状态及页面视图,Vue 官方提供了两种方法去监听route的变化

方法 1:使用watch监听

watch: {
    $route(to, from) {
      console.log("to =>", to);
      console.log("from =>", from);
      this.user = to.params.name;
      // 对路由变化作出响应...
    }
  },

方法 2:使用路由守卫

beforeRouteUpdate(to, from, next) {
    // react to route changes...
    // don't forget to call next()
  }

这两种方法效果其实是一样的,只会在操作 2 和 3 中触发,在操作 1 中无法触发。

方法 3:使用生命周期补全方法 1 | 2
操作 1 会触发挂载钩子函数,所以我们可以mounted+方法 1 | 2 覆盖操作 1、2、3 的场景

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。