vue动态路由:路由参数改变,视图不更新的解决方案

340 阅读1分钟

场景:

通过修改不同的路由参数,渲染不同的内容

比如:当前路由/Product,点击按钮改变路由/Product?from=promote,并且重新刷新列表数据

当使用路由参数时,例如从 /user/foo 导航到 /user/bar,原来的组件实例会被复用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会再被调用。

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

(摘自vue文档)

  watch:{
    $route(to,from){
      console.log("监听变化=",to,from,to.query.from)
      // if(to.query.from != from.query.from){
        // 重新加载数据
        console.log("%c 重新加载数据",'background-color:red');
        console.log("重新加载数据")
        this.init()//重新加载数据
      // }
    }
  }