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 相关文章推荐
springboot+vue实现文件上传下载
Nov 17 Vue.js
vue 插槽简介及使用示例
Nov 19 Vue.js
Vue.extend 登录注册模态框的实现
Dec 29 Vue.js
利用Vue实现简易播放器的完整代码
Dec 30 Vue.js
SpringBoot+Vue 前后端合并部署的配置方法
Dec 30 Vue.js
Vue中强制组件重新渲染的正确方法
Jan 03 Vue.js
vue中父子组件的参数传递和应用示例
Jan 04 Vue.js
Vue看了就会的8个小技巧
Jan 21 Vue.js
如何使用RoughViz可视化Vue.js中的草绘图表
Jan 30 Vue.js
解读Vue组件注册方式
May 15 Vue.js
详解vue身份认证管理和租户管理
May 25 Vue.js
Axios代理配置及封装响应拦截处理方式
Apr 07 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
咖啡与水的关系
2021/03/03 冲泡冲煮
phpmyadmin操作流程
2006/10/09 PHP
PHP中for循环语句的几种变型
2006/11/26 PHP
php与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
2014/09/16 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
javascript 中的继承实例详解
2017/05/05 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
分享ES6的7个实用技巧
2018/01/18 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
python实现中文分词FMM算法实例
2015/07/10 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
2015/12/19 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
python接口调用已训练好的caffe模型测试分类方法
2019/08/26 Python
浅谈Python描述数据结构之KMP篇
2020/09/06 Python
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
J2EE是技术还是平台还是框架
2016/08/14 面试题
两只小狮子教学反思
2014/02/05 职场文书
经理助理岗位职责
2014/03/05 职场文书
图书馆志愿者活动总结
2014/06/27 职场文书
股权转让协议范本
2014/12/07 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
警用民用对讲机找不同
2022/02/18 无线电
ICOM R71E和R72E图文对比解说
2022/04/07 无线电