携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第20天
在开发 Vue 项目的时候,大部分组件是没必要多次渲染的,所以 Vue 提供了一个内置组件 keep-alive 来缓存组件内部状态,避免重新渲染,在开发 Vue 项目的时候,大部分组件是没必要多次渲染的,所以 Vue 提供了一个内置组件 keep-alive 来缓存组件内部状态,避免重新渲染
一、生命周期函数:
在被 keep-alive 包含的组件/路由中,会多出两个生命周期的钩
子:activated 与 deactivated。
1.activated 钩子:
在在组件第一次渲染时会被调用,之后在每次缓存组件被激活时调用。
2.Activated 钩子调用时机:
第一次进入缓存路由/组件,在 mounted 后面,beforeRouteEnter 守卫传给 next 的回调函数之前调用,并且给因为组件被缓存了,再次进入缓存路由、组件时,不会触发这些钩子函数,beforeCreate created beforeMount mounted 都不会触发
3.deactivated 钩子:
组件被停用(离开路由)时调用。
4.deactivated 钩子调用时机:
使用 keep-alive 就不会调用 beforeDestroy(组件销毁前钩子)和 destroyed(组件销毁),因为组件没被销毁,被缓存起来了,这个钩子可以看作beforeDestroy 的替代,如果你缓存了组件,要在组件销毁的的时候做一些事情,可以放在这个钩子里,组件内的离开当前路由钩子 beforeRouteLeave => 路由前置守卫 beforeEach =>全局后置钩子 afterEach => deactivated 离开缓存组件 => activated 进入缓存组件(如果你进入的也是缓存路由)
二、vue中solt 的使用方式,以及solt作用域插槽的用法
使用方式:当组件当做标签进行使用的时候,用 slot 可以用来接受组件标签包裹的内容,当给 solt 标签添加 name 属性的 时候,可以调换响应的位置
插槽作用域:作用域插槽其实就是带数据的插槽,父组件接收来自子组件的 slot 标签上通过 v-bind 绑定进而传递过来的数 据,父组件通过 scope 来进行接受子组件传递过来的数据