本文共 4852 字,大约阅读时间需要 16 分钟。
引用vue官网中内置组件,
Props:
is - string | ComponentDefinition | ComponentConstructor
inline-template - boolean
用法:
渲染一个“元组件”为动态组件。依 is 的值,来决定哪个组件被渲染。
其中component又叫动态组件,属性中 is 指定渲染的组件。
代码解释如下:
Document
Props:
include - 字符串或正则表达式。只有名称匹配的组件会被缓存。
exclude - 字符串或正则表达式。任何名称匹配的组件都不会被缓存。
max - 数字。最多可以缓存多少组件实例。
用法:
< keep-alive > 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。
和 < transition> 相似,< keep-alive > 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在组件的父组件链中。
当组件在 < keep-alive> 内被切换,它的 activated 和 deactivated
这两个生命周期钩子函数
将会被对应执行。
在 2.2.0 及其更高版本中,activated 和 deactivated 将会在 < keep-alive> 树内的所有嵌套组件中触发。
主要用于保留组件状态或避免重新渲染。
注意,< keep-alive > 是用在其一个直属的子组件被开关的情形。如果你在其中有 v-for 则不会工作。如果有上述的多个条件性的子元素,< keep-alive> 要求同时只有一个子元素被渲染。
2.1.0 新增 include and exclude
include 和 exclude 属性
允许组件有条件地缓存。二者都可以用逗号分隔字符串、正则表达式或一个数组来表示:
匹配首先检查组件自身的 name 选项,如果 name 选项不可用,则匹配它的局部注册名称 (父组件 components 选项的键值)。匿名组件不能被匹配。
2.5.0 新增 max
最多可以缓存多少组件实例。一旦这个数字达到了,在新实例被创建之前,已缓存组件中最久没有被访问的实例会被销毁掉。
< keep-alive> 不会在函数式组件中正常工作,因为它们没有缓存实例。
Document
<keep-alive>
缓存组件
把切换出去的组件保留在内存中,可以保留它的状态或避免重新渲染可以添加一个 keep-alive
包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们,主要用于保留组件状态或避免重新渲染
Props:
name - string,用于命名插槽。
Usage:
< slot> 元素作为组件模板之中的内容分发插槽。< slot> 元素自身将被替换。
Header content Default slot content Footer content { { slotProps.item.text }}Mouse position: { { x }}, { { y }}
在组件模板中利用内置组件
<slot></slot>
来承载组件内容,否则它的内容都会被忽略(被模板内容覆盖)
默认插槽default
首页
具名插槽:
<slot/>
组件命名(设置name属性)Vue2.6+已经废除slot属性,改成
v-slot:name
(只能用在template元素或组件上)
这是拥有命名的slot的默认内容 这是拥有命名的slot的默认内容 这是拥有命名的slot的默认内容 这里的内容显示到name为header的插槽 这里的内容显示到默认插槽 这里的内容显示到name为footer的插槽 这里的内容显示到name为header的插槽 这里的内容显示到默认插槽 这里的内容显示到name为footer的插槽
Vue编译规则:父组件模板的所有东西都会在父级作用域内编译;子组件模板的所有东西都会在子级作用域内编译
利用作用域插槽(slot-scope)实现把组件模板template中的数据传到组件内容中处理,实现特殊定制(PS:Vue2.6+已废除该属性,改为
v-slot:name
格式,简写:#name)
{ {username}},{ {msg}} { {player}} { {props.msg}},{ {props.username}}{ {props.msg}},{ {props.username}}{ {foot.title}},{ {foot.player}}
<transition>
<transition-group>
<transition>
用于单个元素动画,<transition-group>
用于多个元素并解析为一个标签(默认:span)
name : 过渡类名前缀(默认:v)
如设置name=“fade”,过渡类名变成:fade-enter / fade-enter-active / fade-leave / fade-leave-active
css : boolean,是否使用 CSS 过渡类(默认:true)。设置为 false,将只通过组件事件触发注册的 JavaScript 钩子。
自定义过渡类名(可配合animate.css框架实现过渡效果)
Vue会自动检测是否设置css动画或JavaScript钩子,并在下列情形中添加进入/离开过渡效果(css过渡或javascript过渡)
通过CSS过渡类名
组件过渡过程中,默认会有四个CSS类名自动进行切换,会有如下四个CSS类名:
通过内置事件实现过渡动画效果,可以利用第三方动画库(如:velocity.js,jquery等)实现动画效果
methods: { // 过渡进入 // 设置过渡进入之前的组件状态 beforeEnter: function (el) { // ... }, // 设置过渡进入完成时的组件状态 enter: function (el, done) { // ... done() }, // 设置过渡进入完成之后的组件状态 afterEnter: function (el) { // ... }, enterCancelled: function (el) { // ... }, // 过渡离开 // 设置过渡离开之前的组件状态 beforeLeave: function (el) { // ... }, // 设置过渡离开完成时地组件状态 leave: function (el, done) { // ... done() }, // 设置过渡离开完成之后的组件状态 afterLeave: function (el) { // ... }, // leaveCancelled 只用于 v-show 中 leaveCancelled: function (el) { // ... } }
代码解释如下:
Document 我是div,会消失和隐藏
以上内置组件不会产生具体的html结构;
转载地址:http://knomz.baihongyu.com/