【问题标题】:Vue URL Updating but Component is notVue URL更新但组件不是
【发布时间】:2020-01-23 14:12:04
【问题描述】:

我的网址更新有问题,但页面没有。

从主页,我显示projects 的列表。点击一个项目会将您带到"website.com/project/project-1",一切都会按预期进行。

但是,在该页面的底部,我再次显示了一个列表。此列表与主页相同,具有相同的功能。但问题是,它会将 url 更新为"website.com/project/project-2",但页面不会重新呈现或更改。

我的代码示例 我当前的组件路由器路径。

path: '/project/:project_slug',
name: 'ProjectPage',
component: ProjectPage

从项目页面到新项目页面的我的路由器链接

<router-link :to="{ name: 'ProjectPage', params: {project_slug: projectHighlightSlug} }">
   <h4 class="header-17 semibold">{{projectTitle}}</h4>
</router-link>

更新

这是我目前的方法/观看部分

methods: {
  goToProject() {
    this.$router.push({
     name: 'ProjectPage', 
     params: {project_slug: this.projectHighlightSlug}
  })
 },
},
watch:{
// eslint-disable-next-line no-unused-vars
'$route'(to, from) {
  this.goToProject();
  }
}

但是,to,from 是“已定义但从未使用过”,单击我的按钮调用 goToProject() 会出现错误; "你可能在 watcher 中有一个无限更新循环,表达式为 "$route""

【问题讨论】:

    标签: vue.js vuejs2


    【解决方案1】:

    正如 Vue 路由器 docs 中所解释的,当用户导航到的 url 使用相同的组件时,它使用该组件的相同实例。因此,文档建议收听 $route 更改或使用 beforeRouteUpdate 导航守卫。

    【讨论】:

    • 啊,我明白了,这对于为什么它只更改 URL 是有道理的。你能举个例子吗?我尝试关注文档和其他一些网站,但并不完全理解“to、from”以及如何动态调用它们。
    【解决方案2】:

    您需要查看路线以更新您的页面。见下面的代码

    watch:{
         '$route' (to, from) {
             this.goToProject()
             // call your method here that updates your page
          }
    }, 
    

    来源dynamic route matching

    【讨论】:

    • 啊,我明白了!你能举个例子吗?我尝试关注文档和其他一些网站,但并不完全理解“to、from”以及如何动态调用它们。
    • 您是如何更新您的页面的?你在调用什么函数?
    • goToProject() { this.$router.push({name: 'ProjectPage', params: {project_slug: this.projectHighlightSlug}}) },
    • 那么你必须把它放在花括号里,仅此而已
    • 如果它还没有帮助到你,请告诉我
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 2018-08-24
    • 2018-04-29
    • 2018-06-26
    • 1970-01-01
    • 2020-06-18
    相关资源
    最近更新 更多