我可以向beforeDestroy添加一些东西来防止破坏组件吗??
或者有没有什么方法可以防止组件被破坏?
我的情况是,当我使用vue-route更改spa页面时,我首先使用watch route,但我发现这不会触发,因为组件只是销毁..
发布于 2017-04-17 18:56:46
您可以使用vue-route navigation-guards,因此如果在钩子内调用next(false),导航将被中止。
router.afterEach((to, from) => {
if(your condition){
next(false) //this will abort route navigation
}
})发布于 2017-04-17 19:37:53
正如belmin bedak评论的那样,你可以使用keep-alive
keep-alive时,另外两个生命周期钩子开始起作用了,它们是activated和deactivated钩子,而不是destroyedkeep-alive的目的是缓存而不是销毁componentkeep-alive元素的include和exclude属性,并提到应该包括到缓存中并从缓存中排除的组件的名称。下面是你想要预先销毁组件的情况,即使它被缓存了,你也可以使用documentation此外,您可以在所有生命周期钩子中执行console.log操作,并检查正在调用哪个生命周期钩子
发布于 2021-02-03 18:04:28
根据此消息来源:https://router.vuejs.org/guide/advanced/navigation-guards.html
我建议你用你的Vue路由器做一些类似的事情:
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实例,并且还将防止用户导航到另一个页面。
https://stackoverflow.com/questions/43449747
复制相似问题