【问题标题】:Vuejs not triggering mounted after user pressed back on his browser用户按下浏览器后,Vuejs 未触发挂载
【发布时间】:2020-08-26 07:38:08
【问题描述】:

在我的 vuejs 应用程序中有一个仪表板,用户可以在其中单击一个按钮将他发送到 /room (router.push("/room");)。

当用户到达页面时,“mounted”功能被触发并发出一个简单的console.log。这行得通。

mounted() {
    console.log("room mounted");
}

如果用户按下浏览器的“返回”按钮并返回仪表板,他可以再次单击该按钮加入房间,但这次不会触发“挂载”功能。

有没有办法让它工作?

谢谢。

【问题讨论】:

    标签: vue.js vuejs2 vue-router


    【解决方案1】:

    针对您对以下答案的部分回复,

    我正在寻找的是当我再次点击触发按钮时 router.push("/room"),因为当我被重定向时,安装也不 更新的`被调用。

    要解决您的问题,您可以通过以下方式查看 $route 对象

    watch: {
      '$route' () {
         // this will be called any time the route changes
       }
    },

    【讨论】:

      【解决方案2】:

      这是 Vue 路由器 according to this issue on the Vue Router GitHub repo 中的预期行为:

      这是预期行为,Vue 在可能的情况下重用组件。

      您可以使用 beforeRouteUpdatehook 来响应路由切换 使用相同的组件。

      “返回”到已安装的组件不会触发组件的后续安装。要查看路由更新时触发了哪些生命周期挂钩,you can look at this blog post(向下滚动到生命周期挂钩图表)。

      您遇到的情况是“客户端更新”列,其中mounted 未被调用,但update 被调用。一般来说,我倾向于在beforeRouteEnterbeforeRouteUpdate 中使用并行代码。可悲的是,它有点重复。

      【讨论】:

      • 感谢您的回答。如果我使用update,当我确实使用“后退”按钮时它会被调用。但我正在寻找的是当我再次单击触发router.push("/room") 的按钮时,因为当我被重定向时,mounted nor updated 被调用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 2014-07-31
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多