Vue的内置组件

1、<keep-alive>是Vue的内置组件,在组件来回切换的时候,为了避免组件重复渲染DOM节点导致的性能问题,将组件状态保寸在内存中。(也就是说会缓存失活的组件,当<keep-alive></keep-alive>包裹的组件中的数据不再发生变化时,会被缓存)

2、<keep-alive> 在包裹动态组件时会缓存不活动的而组件实例,而不是销毁他们。

3、<keep-alive> 不会再DOM树中渲染,也不会在父组件链中存在,(也就是说,在this.$parents中找不到,<keep-alive> 不会在函数式组件中正常工作,因为它们没有缓存实例。

4、<keep-alive>) 和<transition>比较相似。

5、prop
include:类型:字符串或正则表达式。(例:<keep-alive include='One'> 只有组件名为One的组件才会被缓存)。
exclude:类型:字符串或正则表达式。(例:<keep-alive include='Two'> 组件名为Two的组件不会被缓存)。
max:类型:数字。表示最多可以缓存多少组件实例。一旦这个数字达到了,在新实例被创建之前,已缓存组件中最久没有被访问的实例会被销毁掉。(例:<keep-alive :max='5'>

6、<keep-alive>的钩子函数:activeted 和 deactiveted
activeted:在组件被激活时调用,首次也会被调用,每次<keep-alive>被激活时被调用。
deactivated:在组件被停用时调用。

注意:<keep-alive> 是用在其一个直属的子组件被开关的情形。如果你在其中有 v-for 则不会工作。如果有上述的多个条件性的子元素,<keep-alive> 要求同时只有一个子元素被渲染。

使用 exclude 排除之后,就算被包裹在 keep-alive 中,这两个钩子依然不会被调用!另外在服务端渲染时此钩子也不会被调用的。

当引入keep-alive 的时候,页面第一次进入,钩子的触发顺序created-> mounted-> activated,退出时触发deactivated。当再次进入(前进或者后退)时,只触发activated。

keep-alive 之后页面模板第一次初始化解析变成HTML片段后,再次进入就不在重新解析而是读取内存中的数据,即,只有当数据变化时,才使用VirtualDOM进行diff更新。故,页面进入的数据获取应该在activated中也放一份。数据下载完毕手动操作DOM的部分也应该在activated中执行才会生效。
所以,应该activated中留一份数据获取的代码,或者不要created部分,直接将created中的代码转移到activated中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值