请看下面的通量,它显示了我的问题。我正在使用 vue-router 和 this.$router.push
来浏览页面。我从 PageA 开始。
PageA -> PageB(调用 PageB 的
mounted()
)PageB -> PageA(回到PageA)
PageA -> PageB(不调用 PageB 的
mounted()
)
听起来页面(.vue 组件)没有关闭并保存在缓存或其他东西上。每次打开该页面时,我都必须使用 mounted()
方法,并且可能关闭页面并从缓存中清除。我该如何解决?
原文由 Augusto 发布,翻译遵循 CC BY-SA 4.0 许可协议
vue
将有可能重复使用组件,这是预期的。通常你会观察路由变化并相应地更新你的组件状态。
要对路由更改做出反应,您可以使用
beforeRouteUpdate()
:或者,您也可以观察路线并相应地更新状态:
vue-router
文档有几个很好的例子: Data Fetching - Vue Router如果你仍然想使用
mounted()
,你可以通过给你的router-view
一个在路线改变时会改变的键,例如:这将强制每次都重新创建组件,因此它确实会降低性能 - 如果可能的话,我建议使用上述路由挂钩。