vue项目url变化页面却不刷新,如何解决?

问题

分别打开两个详情页面,复制其中一个到另一个的地址栏中输入url,按回车键,页面却没有刷新,怎么回事?

思考

由于vue项目采用hash模式,详情页面采用同一组件,vue官方文档这样解释:
提醒一下,当使用路由参数时,例如从 /user/foo 导航
到 /user/bar,原来的组件实例会被复用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会再被调用。

复用组件时,想对路由参数的变化作出响应的话,你可以简单地 watch (监测变化) $route 对象:

const User = {
  template: '...',
  watch: {
    '$route' (to, from) {
      // 对路由变化作出响应...
    }
  }
}

或者使用 2.2 中引入的 beforeRouteUpdate 导航守卫

const User = {
  template: '...',
  beforeRouteUpdate (to, from, next) {
    // react to route changes...
    // don't forget to call next()
  }
}

最快解决方案

在父组件的 router-view 中加一个 key,例如:

<router-view :key="$route.fullPath" />

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

推荐阅读更多精彩内容

  • 一、vue-router实现原理 SPA(single page application):单一页面应用程序,只有...
    walycode阅读 4,655评论 1 3
  • 这是我第5篇简书。   由于Vue在开发时对路由支持的不足,于是官方补充了vue-router插件。vue的单页面...
    东西里阅读 47,055评论 20 212
  • 安装 直接下载 在Vue后面加载vue-router,它会自动安装的: NPM 如果在一个模块化工程中使用它,必须...
    oWSQo阅读 4,112评论 0 0
  • 其实无论是平时演讲或开会和聊天,我们都需要一个明确的主题,这样方便大家了解情况,主题太多会显得啰嗦且不明确,浪费时...
    MSXiang阅读 1,313评论 0 0
  • 作为一名负责任的老师,加强课堂教学管理是必须要做好的,是天经地义的事。其实只要做好了课堂教学管理,也就提高了课堂效...
    宕州老马阅读 5,589评论 3 13