vue 2生命周期 - 如何停止beforeDestroy?

Kev*_*nHu 5 vue.js vuejs2

我可以添加一些东西来beforeDestroy防止破坏组件吗??

或者有什么方法可以防止破坏组件?

我的情况是,当我通过vue-route更改spa页面时,我首先使用watch route,但我发现它不会触发,因为组件只是破坏..

Vam*_*hna 6

正如贝尔明·贝达克评论的那样,你可以使用keep-alive

  • 当您使用 keep-alive另外两个生命周期钩子时,它们是activateddeactivatedhooks 而不是destroyed

  • 目的 keep-alive是缓存而不是破坏组件

  • 您可以使用元素的includeexcludeatteibutes keep-alive,并提及应包含在缓存中和从缓存中排除的组件的名称。这是文档

  • 如果您想强制销毁该组件,即使它已缓存,您也可以vm.$destroy() 在此处使用

此外,您可以console.log在所有生命周期挂钩中检查正在调用哪个生命周期挂钩


Sau*_*abh 4

您可以使用 vue-route navigation-guards,因此如果您next(false)在钩子内调用,导航将被中止。

router.afterEach((to, from) => {
  if(your condition){
    next(false) //this will abort route navigation
  }
})
Run Code Online (Sandbox Code Playgroud)