vue中activated的用法


Posted in Vue.js onJanuary 03, 2021

keep-alive

<keep-alive>包裹动态组件的时候,会缓存不活动的组件实例,而不是摧毁他们。其是一个抽象的组件,自身不会渲染一个DOM元素,也不会出现在父组件链中。
说白了被<keep-alive>包裹的组件其会被缓存
废话不多说直接上例子.

我们现在创建两个子组件conpoment1,compoment2,其内容如下

<template>
 <div class="wrapper">
  <ul class="content"></ul>
  <button class="add" id="add" @click="add">添加子元素</button>
 </div>
</template>

<script>
export default {
 data() {
  return {};
 },
 methods: {
  add() {
   let ul = document.getElementsByClassName("content")[0]; 
   let li = document.createElement("li");
   li.innerHTML = "我是添加的元素";
   ul.appendChild(li);   
  }
 }
};
</script>
<style >
</style>

代码不用解释了吧,就是点击按钮在ul动态添加一个li元素。
接着我们在路由中注册一下,再回到APP.vue中修改一下配置

<template>
 <div id="app">
  <keep-alive>
   <router-view />
  </keep-alive>
</template>

这样我们就会发现,当我们切换路由的时候,我们之前添加的子元素还回保存在那里

vue中activated的用法

如果是这样的话所有的页面都被缓存了,一些需要重新加载不需要缓存的我们可以通过v-for来实现。当然我们可以在路由中设置一个key值来判断组件是否需要缓存,就像下面这样

//index.js
{
   path: '/1',
   name: 'components1',
   component: Components1,
   meta: {
    keepAlive: true  //判断是否缓存
   }
  },
  {
   path: '/2',
   name: 'components2',
   component: Components2,
   meta: {
     keepAlive: false
   }
  },

然后我们的App.vue中只需要判断其keepAlive值即可

<div id="app">
  <keep-alive>
   <router-view v-if="$route.meta.keepAlive" />
  </keep-alive>
  <router-view v-if="!$route.meta.keepAlive" />
</template>

这时候我们回到页面中添加子元素并切换路由就会发现只有components1中的组件有缓存。

activated

先说下这个生命周期钩子,官网说其是在服务器端渲染期间不被调用,
说白了其就是在挂载后和更新前被调用的。但如果该组件中没有使用缓存,也就是没有被<keep-alive>包裹的话,activated是不起作用的。我们直接来试一下就知道了。

//components1中
 created() {
  console.log("1激活created钩子函数");
 },
 activated() {
  console.log("1激活activated钩子函数");
 },
 mounted() {
  console.log("1激活mounted钩子函数");
 }

//components2中
 created() {
  console.log("2激活created钩子函数");
 },
 activated() {
  console.log("2激活activated钩子函数");
 },
 mounted() {
  console.log("2激活mounted钩子函数");
 }

我们在2个组件中分别打印出其钩子函数执行情况。我们可以看到

vue中activated的用法

在执行components1时候其是执行了activated钩子函数的,而components2则没有,因为components2并没有被<keep-alive>包裹,所以其并不会激活该钩子函数。

当我们再切换一次路由的时候又发现了神奇的地方

vue中activated的用法

组件1中只执行activated钩子钩子函数,而组件2则把创建和挂载的钩子函数都执行了。
这就是缓存的原因,components其对组件进行了缓存所以并不会再一次执行创建和挂载。

简单的说activated()函数就是一个页面激活后的钩子函数,一进入页面就触发;

所以当我们运用了组件缓存时,如果想每次切换都发送一次请求的话,需要把请求函数写在activated中,而写在created或mounted中其只会在首次加载该组件的时候起作用。

补充:

keep-alive组件除了actived,还有deactived函数钩子

activated

类型:func

触发时机:keep-alive组件激活时使用;

deactivated

类型:func

触发时机:keep-alive组件停用时调用;

以上就是vue中activated的用法的详细内容,更多关于vue activated用法的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
在vue项目中封装echarts的步骤
Dec 25 Vue.js
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 Vue.js
vue3.0自定义指令(drectives)知识点总结
Dec 27 Vue.js
vue中配置scss全局变量的步骤
Dec 28 Vue.js
vue导入.md文件的步骤(markdown转HTML)
Dec 31 Vue.js
如何封装Vue Element的table表格组件
Feb 06 Vue.js
如何在 Vue 中使用 JSX
Feb 14 Vue.js
vue实现倒计时功能
Mar 24 Vue.js
vue实现简单数据双向绑定
Apr 28 Vue.js
vue-cropper组件实现图片切割上传
May 27 Vue.js
Vue的生命周期一起来看看
Feb 24 Vue.js
vue-cli3.x配置全局的scss的时候报错问题及解决
Apr 30 Vue.js
vue实现登录功能
Dec 31 #Vue.js
vue 实现图片懒加载功能
Dec 31 #Vue.js
vue 动态创建组件的两种方法
Dec 31 #Vue.js
Vue 修改网站图标的方法
Dec 31 #Vue.js
Vue中inheritAttrs的使用实例详解
Dec 31 #Vue.js
vue导入.md文件的步骤(markdown转HTML)
Dec 31 #Vue.js
vue-cli4.0多环境配置变量与模式详解
Dec 30 #Vue.js
You might like
BBS(php &amp; mysql)完整版(二)
2006/10/09 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
使用 js+正则表达式为关键词添加链接
2014/11/11 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
Vue 实现一个命令式弹窗组件功能
2019/09/25 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
深入学习Python中的上下文管理器与else块
2017/08/27 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
PyTorch搭建多项式回归模型(三)
2019/05/22 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
Python递归函数特点及原理解析
2020/03/04 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
C语言如何决定使用那种整数类型
2016/11/26 面试题
网游商务专员求职信
2013/10/15 职场文书
制药工程专业毕业生推荐信
2013/12/24 职场文书
中考冲刺决心书
2014/03/11 职场文书
公休请假条
2014/04/11 职场文书
农村文化活动总结
2014/08/28 职场文书
公务员培的训心得体会
2014/09/01 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
导游词欢迎词
2015/02/02 职场文书