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项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 Vue.js
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
Dec 15 Vue.js
vue调用微信JSDK 扫一扫,相册等需要注意的事项
Jan 03 Vue.js
Vue实现多页签组件
Jan 14 Vue.js
详解vue中v-for的key唯一性
May 15 Vue.js
vue3使用vue-router的完整步骤记录
Jun 20 Vue.js
Element-ui Layout布局(Row和Col组件)的实现
Dec 06 Vue.js
vue使用echarts实现折线图
Mar 21 Vue.js
如何优化vue打包文件过大
Apr 13 Vue.js
vue的项目如何打包上线
Apr 13 Vue.js
vue动态绑定style样式
Apr 20 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
php set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
PHP跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
PHP 使用memcached简单示例分享
2015/03/05 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
JavaScript实现简单的二级导航菜单实例
2015/04/15 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
Vue.js进阶知识点总结
2018/04/01 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
跟老齐学Python之总结参数的传递
2014/10/10 Python
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
win7 x64系统中安装Scrapy的方法
2018/11/18 Python
python批量爬取下载抖音视频
2019/06/17 Python
如何在pycharm中安装第三方包
2020/10/27 Python
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
大专自我鉴定范文
2013/10/23 职场文书
旅游专业职业生涯规划范文
2014/01/13 职场文书
教师简历自我评价
2014/02/03 职场文书
物控部经理职务说明书
2014/02/25 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS