Vue路由相关的坑

2019/10/25 posted in  Vue
Tags:  #vue #router

路由变化页面数据不刷新

原因

出现这种情况是因为依赖路由的params参数获取写在created生命周期里面,因为相同路由二次甚至多次加载的关系 没有达到监听,退出页面再进入另一个文章页面并不会运行created组件生命周期,导致文章数据还是第一次进入的数据

解决办法

  • 方法一:watch监听路由是否变化
 watch: {
 // 方法1
  '$route' (to, from) { //监听路由是否变化
    if(this.$route.params.articleId){// 判断条件1  判断传递值的变化
      //获取文章数据
    }
  }
  //方法2
  '$route'(to, from) {
    if (to.path == "/page") {    /// 判断条件2  监听路由名 监听你从什么路由跳转过来的
       this.message = this.$route.query.msg     
    }
  }
  
}
  • 方法二:使用beforeRouteUpdate 守卫:
const User = {
  template: '...',
  beforeRouteUpdate (to, from, next) {
    // react to route changes...
    // don't forget to call next()
  }
}

路由组件懒加载

// 方式一
component: () => import("@/views/Login.vue")
// 方式二
component: resolve => require(["@/views/Register.vue"], resolve)

« ESLint里的规则教会我,无规矩 不编程 Vue监听窗口变化 »