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的mixin策略
Nov 19 Vue.js
Vue router安装及使用方法解析
Dec 02 Vue.js
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
Vue中ref和$refs的介绍以及使用方法示例
Jan 11 Vue.js
vue实现验证用户名是否可用
Jan 20 Vue.js
如何在 Vue 中使用 JSX
Feb 14 Vue.js
vue项目多环境配置(.env)的实现
Jul 21 Vue.js
Vue3.0 手写放大镜效果
Jul 25 Vue.js
vue实现移动端div拖动效果
Mar 03 Vue.js
vue选项卡切换的实现案例
Apr 11 Vue.js
vue配置型表格基于el-table拓展之table-plus组件
Apr 12 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
跟我学Laravel之视图 &amp; Response
2014/10/15 PHP
详解php中 === 的使用
2016/10/24 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
php常用的工具开发整理
2019/09/26 PHP
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
Vue3.0数据响应式原理详解
2019/10/09 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
[43:53]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.22
2019/09/05 DOTA
python爬取网易云音乐评论
2018/11/16 Python
使用pycharm在本地开发并实时同步到服务器
2019/08/02 Python
python3 深浅copy对比详解
2019/08/12 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
解决python脚本中error: unrecognized arguments: True错误
2020/04/20 Python
django和flask哪个值得研究学习
2020/07/31 Python
python绘制分布折线图的示例
2020/09/24 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
美国轮胎网站:Priority Tire
2018/11/28 全球购物
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
你对IPv6了解程度
2016/02/09 面试题
简单叙述一下MYSQL的优化
2016/05/09 面试题
上班迟到检讨书
2014/01/10 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
公司人事管理制度
2015/08/05 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
MySQL单表千万级数据处理的思路分享
2021/06/05 MySQL
SQL语句中JOIN的用法场景分析
2021/07/25 SQL Server
pandas进行数据输入和输出的方法详解
2022/03/23 Python