Vuejs:使用keep alive的子routerview组件的生命周期挂钩

Vam*_*hna 5 vue.js vue-router vue-component vuejs2

为了清楚理解,我将以更笼统的方式解释我的问题,这是jsFiddle

我有两条主要路线,分别显示了两个不同的组成部分 router-view

  • 单击路径1时,路径为:“ / route-1”

  • 单击路径2时,路径为:“ / route-2 / sub-route-a”

Route-2router-view内部包含另一个,显示两个子路由:

  • 子路由

  • 子路由b

路由-2被点击它打开的部分路线-2子路由一个预开设了router-view

Route-2内的主路由器视图和路由器视图都包装在keep-alivetag内,以便进行缓存

缓存,一切正常。

我添加了所有生命周期挂钩,并使用console.log查看调用了哪个挂钩

  • 这是第一次对预期的全部组件beforeCreate()created()beforeMount()mounted()钩子被调用。

  • 由于router-view在keep-alive元素下,因此该activated()钩子也称为

  • 每当我来回移动之间的Route-1路径2activated()deactivated()输入并分别放置每个组件时钩子被称为

我的问题来了

  • 从什么时候开始的Route-2被点击它打开的部分 路线-2子路由一在其预先打开router-view,所有的生命周期挂钩子路由一个 componenents被称为只有一次

  • 当我回去的Route-1 deactivated()路由-2的调用,但没有勾子路径,一个被调用。

  • 仅当我在子路由a子路由b之间切换时,这些组件的activated()deactivated()挂钩才被调用

  • 上的随后进入的Route-2 activated()的钩的Route-2被称为但没有的钩子路由一个被称为

  • 我想缓存子路由 -a,但在每次输入时对其进行更改。因此,由于第一次没有调用生命周期挂钩,因此我将代码放在哪里。

  • **我不想使用** beforeEnter()