vue 路由新增参数 刷新页面

发布于 2022-09-12 02:21:09 字数 460 浏览 7 评论 0

vue项目中默认一进来的路由是 localhost:3000/#/work/workflow
该页面是一个父组件 组件下有3个子组件,页面有一个tab切换,分别展示对应的组件。

我现在想实现的是当我点击第三个tab的时候 我想给当前路由添加一个参数,也就是想改变当前的路由为localhost:3000/#/work/workflow?tab=2。我用的是下面的方法:

 this.$router.push(
        {
          path: '/work/workflow',
          query: {
           tab: '2'
          }
        }
      )

但是当我切换过来时 页面成了一片空白,需要手动刷新你下才能出现tab为2对应的组件。

各位大神帮忙分析下原因吧,怎样动态给路由添加参数,并且跳转到对应的tab对应的组件

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

滥情哥ㄟ 2022-09-19 02:21:09

在页面加载的时候,比如mounted时,去拿querytab参数,手动去显示对应的tab(就是初始化一遍当前显示哪一个)。因为你这是tab方式,不是子路由方式,所以这个操做是必需的。如果用的地方很多,就封装一下,也不麻烦。

当然,我的项目时使用tab + 子路由方式,只需处理刷新时高亮问题就行,大致就这么个结构

<template>
  <div>
    <my-tab/>
    <router-view/>
  </div>
</template>
━╋う一瞬間旳綻放 2022-09-19 02:21:09

你可能是在created钩子去加载数据了。在/work/workflow页面里面去push当前的路由,是不会再触发created和mounted这些生命周期的了,所以页面数据没有再次加载。
此时,这个需求可以通过watch:$route来捕捉路由的变化,在$route变化时触发数据加载。

methods:{
  getList(){ // 加载数据的方法 }
},
created(){
  // 这个解决首次进入页面时加载数据的问题
  this.getList()
},
watch:{
  // 这个解决当前路由变化时加载数据的问题
  $route (val) {
    // 拿到路由参数,再加载数据
    this.getList()
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文