首页 > 解决方案 > Vue单页应用路由器,当我们改变路由时,组件会发生什么?

问题描述

假设我有一个名为 FirstPage 的组件,这是我的默认路由,现在 FirstPage 触发异步调用,借助 vuex 存储的操作,每分钟向后端 Api 进行一次调用(它在组件加载时触发作为一条路线),现在假设我转到了一条转到 About 组件的 about 路线,FirstPage 是否仍在进行调用?

编辑:
我还没有开发一个应用程序,所以我不能提供例子。
了解路由器在这些情况下的行为符合我的兴趣,因为每当我更改路由时,我都希望停止进行持续调用(因为它们不是必需的)。
原因是,根据这一点,我必须为我想到的项目切换工具。

标签: vue.jsvuexvue-router

解决方案


通常,当您离开它时,组件的实例将被销毁。但是,这有两个例外..

1)当您使用带参数的路线时。来自Vue 路由器文档

使用带参数的路由时要注意的一件事是,当用户从/user/footo导航时/user/bar,将重用相同的组件实例。由于两条路由都渲染相同的组件,因此这比销毁旧实例然后创建新实例更有效。但是,这也意味着组件的生命周期钩子不会被调用。

2)当您将router-view组件包装在keep-alive元素中时。由于<router-view>本质上是一个动态组件

一般来说,当组件实例被销毁时,Vue 可以很好地进行内务管理和清理工作。但有时您必须进行一些手动清理,特别是如果您使用某种外部库。这通常在实例生命周期beforeDestroy的钩子中处理。


推荐阅读