Vue单页应用路由器,当我们更改路线时组件会发生什么?

时间:2018-10-12 08:07:58

标签: vue.js vuex vue-router

让我们假设有一个名为FirstPage的组件,这是我的默认路由,现在FirstPage在vuex存储的帮助下触发了对后端Api的每分钟一次异步调用(当组件作为路由加载),现在假设我转到了关于About组件的About路由,FirstPage是否仍在进行调用?

编辑:
我尚未使用该应用程序开发应用程序,因此无法提供示例。
了解路由器在这些情况下的行为符合我的兴趣,因为每当更改路由时,我都希望停止进行常量调用(因为它们是不必要的)。
原因是根据此,我必须为我想到的项目切换工具。

4 个答案:

答案 0 :(得分:2)

通常,当您离开组件实例时,该组件的实例将被销毁。但是,..

有两个例外。

1)使用带参数的路线时。从Vue Router docs

  

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

2)将router-view组件包装在keep-alive元素中时。由于the <router-view>本质上是dynamic component

通常,在组件实例销毁后,Vue可以很好地完成内部管理和清理工作。但是有时您必须做一些manual cleanup,特别是如果您使用某种外部库。通常在instance's lifecyclebeforeDestroy钩子中进行处理。

答案 1 :(得分:1)

在正常情况下,在创建时在所述组件内完成的任何逻辑/脚本/等都将在 on destroy/close 钩子上“清除”(不仅与 vue 相关,而且在许多其他工具中可见),如果有需要坚持一些东西,那么它应该在更高的范围内(或其他解决方案)

答案 2 :(得分:0)

为相应组件编写的任何脚本仅在组件在页面中呈现时运行。一旦您找到有关替换先前组件的组件,则先前的脚本将无法运行。

答案 3 :(得分:0)

您可以制作一个带有路由器视图的父组件,并在您始终希望加载的页面中进行加载,因此您的FirstPage组件,但是该组件后面应该只有逻辑,而没有html,因为否则您将始终看到呈现。路由器查看您要显示实际html和内容的页面。我希望您能明白,否则我可以为您做个例子。祝好运。