vue中的keep-alive组件详解

        keep-alive是一个内置组件,它的主要作用是缓存不活动的组件实例,而不是销毁它们。这可以达到节省请求、优化性能的目的。当组件被keep-alive包裹时,Vue会为该组件额外增加两个生命周期钩子:

activated

触发时机:当组件被keep-alive缓存后,再次进入该组件的可见区域时触发。

用途:主要用于执行组件重新激活时需要的操作,如更新数据或执行DOM操作。这个钩子相当于传统意义上的组件重新渲染或激活的入口。

deactivated

触发时机:当组件被keep-alive缓存,且从可见区域离开时触发。

用途:执行组件停用时的清理工作,如取消定时器、解绑事件监听器等。这个钩子帮助管理组件的退出状态,确保资源得到正确释放。

生命周期执行情况

首次进入组件

如果组件被keep-alive包裹,那么首次进入时会执行beforeCreate、created、beforeMount、mounted以及activated这五个生命周期钩子。

如果组件没有被keep-alive包裹,则只会执行前四个钩子:beforeCreate、created、beforeMount、mounted。

非首次进入组件

        如果组件被keep-alive包裹,那么之后每次进入时只会执行activated这一个生命周期钩子,因为组件实例被缓存了,没有重新创建。

        如果组件没有被keep-alive包裹,则每次进入都会执行完整的生命周期流程,即beforeCreate、created、beforeMount、mounted。

其他

        keep-alive可以通过include和exclude属性来控制哪些组件需要被缓存,以及哪些组件不应该被缓存。

        当使用keep-alive时,如果需要在每次进入页面时获取最新的数据,通常需要在activated钩子中进行数据请求,而不是在created或mounted钩子中。

        需要注意的是,keep-alive会将数据保留在内存中,因此在某些情况下可能会导致内存占用过高。因此,在使用时需要权衡其优缺点,并根据实际需求进行选择。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值