vue组件 keep-alive 和 transition 使用详解


Posted in Javascript onOctober 11, 2019

1.keep-alive

能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。

包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 相似, 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。

当组件在 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。

include: 字符串或正则表达式。只有匹配的组件会被缓存。
exclude: 字符串或正则表达式。任何匹配的组件都不会被缓存。

// 组件

export default {
 name: 'test-keep-alive',
 data () {
  return {
    includedComponents: "test-keep-alive"     //这句不能漏掉
  }
 }
}

<keep-alive include="test-keep-alive">
 <!-- 将缓存name为test-keep-alive的组件 -->
 <component></component>
</keep-alive>

<keep-alive include="a,b"> 
<!-- 将缓存name为a或者b的组件,结合动态组件使用 --> 
<component :is="view"></component> 
</keep-alive> 
<!-- 使用正则表达式,需使用v-bind --> 
<keep-alive :include="/a|b/"> 

<component :is="view"></component> 
</keep-alive>

结合router使用

这一段通常放在vue项目最外层的app.vue中 为了使所有组件都能很好的利用 这个是否需要缓存特性

//需要缓存时
<keep-alive>
  <router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
//不需要缓存时
<router-view v-if="!$route.meta.keepAlive"></router-view>
//两组同时启用,只要在路由meta元信息中 对keepAlive定义,就能自主控制是否需要缓存

//...router.js
export default new Router({
 routes: [
  {
   path: '/',
   name: 'Hello',
   component: Hello,
   meta: {
    keepAlive: false // 不需要缓存
   }
  },
  {
   path: '/page1',
   name: 'Page1',
   component: Page1,
   meta: {
    keepAlive: true // 需要被缓存
   }
  }
 ]
})

2.transition

name - string,用于自动生成 CSS 过渡类名。例如:name: ‘fade' 将自动拓展为.fade-enter,.fade-enter-active等。默认类名为 “v”

元素作为单个元素/组件的过渡效果。 只会把过渡效果应用到其包裹的内容上,而不会额外渲染 DOM 元素,也不会出现在检测过的组件层级中。

Vue只有在插入,更新或者移除DOM元素时才会应用过渡效果。一般两类情况一个是利用CSS过渡或者动画,另一个是利用JavaScript钩子函数。

!-- 首先将要过渡的元素用transition包裹,并设置过渡的name,然后添加触发这个元素过渡的按钮(实际项目中不一定是按钮,任何能触发过渡组件的DOM操作的操作都可以) -->

<div>
 <button @click="show=!show">show</button>
 <transition name="fade">
  <p v-show="show">hello</p>
 </transition>
</div>

&.fade-enter-active, &.fade-leave-active
 transition: all 0.5s ease   
&.fade-enter, &.fade-leave-active
 opacity: 0

组件过渡过程中,会有四个CSS类名进行切换,这四个类名与上面transition的name属性有关,比如name=“fade”,会有如下四个CSS类名:

fade-enter:进入过渡的开始状态,元素被插入时生效,只应用一帧后立即删除;

fade-enter-active:进入过渡的结束状态,元素被插入时就生效,在过渡过程完成之后移除;

fade-leave:离开过渡的开始状态,元素被删除时触发,只应用一帧后立即删除;

fade-leave-active:离开过渡的结束状态,元素被删除时生效,离开过渡完成之后被删除;

从上面四个类名可以看出,fade-enter-activefade-leave-active在整个进入或离开过程中都有效,所以CSS的transition属性在这两个类下进行设置。

上面示例中,fade-enter和fade-leave-active类设置CSS为opacity:0,说明过渡刚进入和离开的时候透明度为0,即不显示。当然还可以设置其他的CSS属性

总结

以上所述是小编给大家介绍的vue组件 keep-alive 和 transition 使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
鼠标拖拽移动子窗体的JS实现
Feb 25 Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&amp;”)
Dec 23 Javascript
微信JS-SDK选取手机照片上传功能
Apr 21 Javascript
详细AngularJs4的图片剪裁组件的实例
Jul 12 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
vue2.0学习之axios的封装与vuex介绍
May 28 Javascript
jQuery实现获取动态添加的标签对象示例
Jun 28 jQuery
每个 JavaScript 工程师都应懂的33个概念
Oct 22 Javascript
JS中如何轻松遍历对象属性的方式总结
Aug 06 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
Dec 06 Javascript
Vue实现PC端靠边悬浮球的代码
May 09 Javascript
jquery将json转为数据字典的实例代码
Oct 11 #jQuery
JavaScript实现抖音罗盘时钟
Oct 11 #Javascript
javascript刷新父页面方法汇总详解
Oct 10 #Javascript
element form 校验数组每一项实例代码
Oct 10 #Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
Oct 10 #Javascript
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 #jQuery
VUE注册全局组件和局部组件过程解析
Oct 10 #Javascript
You might like
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
2015/01/02 Javascript
js Calender控件使用详解
2015/01/05 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
详解Node 定时器
2018/02/26 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
使用微信SDK自定义分享的方法
2019/07/03 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
python读取csv文件示例(python操作csv)
2014/03/11 Python
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
Python 串口通信的实现
2020/09/29 Python
Python环境使用OpenCV检测人脸实现教程
2020/10/19 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
配置H5的滚动条样式的示例代码
2018/03/09 HTML / CSS
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
工商企业管理实习自我鉴定
2013/12/04 职场文书
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
教育局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
2014年个人售房协议书
2014/10/30 职场文书
2016年社区“我们的节日·中秋节”活动总结
2016/04/05 职场文书
用Python selenium实现淘宝抢单机器人
2021/06/18 Python