首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vue 2生命周期-如何停止beforeDestroy?

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

Stack Overflow用户
提问于 2017-04-17 18:31:38
回答 4查看 11.5K关注 0票数 7

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

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

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

EN

回答 4

Stack Overflow用户

发布于 2017-04-17 18:56:46

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

代码语言:javascript
复制
router.afterEach((to, from) => {
  if(your condition){
    next(false) //this will abort route navigation
  }
})
票数 4
EN

Stack Overflow用户

发布于 2017-04-17 19:37:53

正如belmin bedak评论的那样,你可以使用keep-alive

  • 当你使用keep-alive时,另外两个生命周期钩子开始起作用了,它们是activateddeactivated钩子,而不是destroyed
  • The。keep-alive的目的是缓存而不是销毁component
  • you可以使用keep-alive元素的includeexclude属性,并提到应该包括到缓存中并从缓存中排除的组件的名称。下面是你想要预先销毁组件的情况,即使它被缓存了,你也可以使用documentation
  • in here

此外,您可以在所有生命周期钩子中执行console.log操作,并检查正在调用哪个生命周期钩子

票数 4
EN

Stack Overflow用户

发布于 2021-02-03 18:04:28

根据此消息来源:https://router.vuejs.org/guide/advanced/navigation-guards.html

我建议你用你的Vue路由器做一些类似的事情:

代码语言:javascript
复制
const router = new VueRouter({  }); // declare your router with params

router.beforeEach((to, from, next) => {
    if(yourCondition){
        next(false); // prevent user from navigating somewhere
    } else {
        return next(); // navigate to next "page" as usual
    }
});

这将防止在声明的条件下销毁您的Vue实例,并且还将防止用户导航到另一个页面。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43449747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档