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打开其他项目页面并传入数据详解
Nov 25 Vue.js
浅谈Vue使用Elementui修改默认的最快方法
Dec 05 Vue.js
vue实现树状表格效果
Dec 29 Vue.js
vue element和nuxt的使用技巧分享
Jan 14 Vue.js
vue-cli中实现响应式布局的方法
Mar 02 Vue.js
原生JS封装vue Tab切换效果
Apr 28 Vue.js
详解Vue的options
May 15 Vue.js
idea编译器vue缩进报错问题场景分析
Jul 04 Vue.js
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 Vue.js
详解Vue项目的打包方式(生成dist文件)
Jan 18 Vue.js
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
vue项目如何打包之项目打包优化(让打包的js文件变小)
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
PHP 命令行参数详解及应用
2011/05/18 PHP
php各种编码集详解和以及在什么情况下进行使用
2011/09/11 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
jQuery hover 延时器实现代码
2011/03/12 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
js面向对象的写法
2016/02/19 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
js删除数组元素、清空数组的简单方法(必看)
2016/07/27 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
原生JS无缝滑动轮播图
2019/10/22 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
javascript实现固定侧边栏
2021/02/09 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
2016/11/02 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
Python count函数使用方法实例解析
2020/03/23 Python
Pycharm生成可执行文件.exe的实现方法
2020/06/02 Python
Python json格式化打印实现过程解析
2020/07/21 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
中学劳技课教师的自我评价
2014/02/05 职场文书
工作证明英文模板
2014/10/21 职场文书
2014年党建工作汇报材料
2014/11/02 职场文书
保证金退回承诺函格式
2015/01/21 职场文书