这是我参与8月更文挑战的第12天,活动详情查看:8月更文挑战html
这篇文章咱们来说一下内置组件keep-alive
和slot
的使用方法,在使用它们的时候咱们又该注意什么呢,下面让咱们一探究竟把。正则表达式
官方说,<keep-alive>
包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 <transition>
类似,<keep-alive>
是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出如今组件的父组件链中。数组
其实,就是来作组件缓存的,这是由于咱们的实际需求中会有这样的状况:当切换到已显示过的组件的时候,咱们不但愿这个组件从新渲染,就可使用<keep-alive>
。缓存
基本使用markdown
<keep-alive>
能够结合<component>
使用,以下:app
<keep-alive>
<component :is="view"></component>
</keep-alive>
复制代码
条件判断 <keep-alive>
能够结合v-if
、v-else-if
和v-else
使用。post
<keep-alive>
<comp-a v-if="a > 1"></comp-a>
<comp-b v-else></comp-b>
</keep-alive>
复制代码
结合过渡或动画效果使用动画
<keep-alive>
能够结合<transition>
使用,以下:ui
<transition>
<keep-alive>
<component :is="view"></component>
</keep-alive>
</transition>
复制代码
当咱们须要频繁的切换组件,并且须要带有过渡或动画效果的时候,可使用这种方式。值得咱们注意的是:<keep-alive>
是用在其一个直属的子组件被切换的情形。若是你在其中有 v-for
则不会工做。若是有上述的多个条件性的子元素,<keep-alive>
要求同时只有一个子元素被渲染。url
include 和 exclude
include
和 exclude
prop 容许组件有条件地缓存。include
表示包含, exclude
表示排除。两者均可以用逗号分隔字符串、正则表达式或一个数组来表示。
<keep-alive include="a,b">
<component :is="view"></component>
</keep-alive>
复制代码
v-bind
<keep-alive :include="/a|b/">
<component :is="view"></component>
</keep-alive>
复制代码
v-bind
<keep-alive :include="['a', 'b']">
<component :is="view"></component>
</keep-alive>
复制代码
exclude
也是一样的用法,优先匹配组件的name
,若是 name
选项不可用,则匹配它的局部注册名称 (父组件 components
选项的键值)。
max
最多缓存组件数量,若是超过这个数量,那么最久没被访问的会被销毁。使用以下:
<keep-alive :max="10">
<component :is="view"></component>
</keep-alive>
复制代码
<slot>
元素做为组件模板之中的内容分发插槽,<slot>
元素自身将被替换。在回首Vue3之指令篇(八)这篇文章中,咱们在讲v-slot
的同时,也详细讲了slot
的用法,传送门过去能够详细的了解一下。
<keep-alive>
可使用include
和 exclude
按需缓存。
slot
的具名插槽和做用域插槽要合理的去使用。