无需重新安装组件即可更新 Vue Router?

iRy*_*ell 5 vue.js

我有一个activeTab从 URL 路径继承路由参数的页面。所以在我的页面上,我可以导航到/home/主页选项卡并在其中加载,或者在/somethingElse我的页面模板的选项卡视口中加载不同的选项卡。

要更新选项卡,我正在使用:

updateTab(tab) {
  this.activeTab = tab
  this.$router.push(tab)
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我在屏幕上闪烁,我的 mounted()函数会在每个组件中重新执行,从而触发应仅在应用程序的第一个入口点上触发的动画。

这更接近于所需的行为,其中选项卡发生了变化,并且我没有看到闪烁或重新安装组件:

updateTab(tab) {
  this.activeTab = tab
  history.pushState({}, '', tab)
}
Run Code Online (Sandbox Code Playgroud)

但是,将 activeTab 直接推入历史记录似乎会阻止后退按钮正确恢复以前的状态。

如何在不重新安装所有组件的情况下更新 Vue Router 的路径?

Joa*_*ild 5

这不是预期的行为。不改变的组件不应该重新执行挂载的钩子。

我会在 vue 组件层次结构顶部的某个位置搜索问题,因为听起来其他一些代码可能会强制重新渲染层次结构。