<keep-alive>用来缓存不经常变化的组件,以提高性能,当我们在不同路由之间进行切换或者是动态改变组件时,<keep-alive>可以确保被缓存的组件保留之前的一个状态,而不会重新执行created和mounted等生命周期钩子函数。
那么<keep-alive>会提供activated 和 deactivated 生命周期钩子函数的应用,这两个生命周期钩子函数是在缓存组件时或失去缓存组件时进行的触发。
activated钩子函数叫做激活状态,也就是组件当被激活的时候进行的调用,这时候组件从<keep-alive>缓存中变为一个激活的状态,将会再次的插入到页面当中进行一个渲染显示。
deactivated钩子函数是当缓存的组件失去我们的活力调用时触发,这时组件从页面当中移除并且从新添加到<keep-alive>缓存当中。
那么我们可以在activated钩子中进行内部数据的初始化操作,而在deactivated钩子中进行数据的清理以确保每次被激活时都有正确的一个状态,如果组件处于一些外部服务的应用,比如websocked连接,或者定时器操作等等,则可以在activated中开始或启动的一个服务,在deactivated当中关闭或停止某些服务,以避免浪费一些无效的一些资源,那么我们可以在组件切换的时候添加一些自定义的过渡或动画的效果,这样可以通过activated以及deactivated钩子中去触发我们的动画效果或者是相应的业务逻辑来进行实现。
总的来说,activated和deactivated生命周期钩子函数为我们提供了在缓存的组件状态变换时执行一些特殊的业务逻辑的一个操作功能。
那么对于<keep-alive>来说,除了生命周期钩子函数的一个影响,还有其他属性的一个设置,比如include 和 exclude 属性的设置. 主键的include和exclude属性是用于配置那些主键是用来缓存,那些组件是不应该被缓存,而它们的属性可以接收的数据类型,主要包括了字符串,正则表达式或字符串的数组内容。