当前位置: 首页 > news >正文

生命周期函数

生命周期函数,也叫钩子函数、生命函数。

定义:在某一种条件成立的时刻 系统会去调用的vue中设定的函数 这些函数都叫做:生命周期函数。

什么叫钩子?

c语言中有一类系统回调的函数然后执行业务 叫做钩子

为什么要用生命周期函数?

1.把整个运行期间的业务区分的很明显;

2.能够更好的帮助我们把产品的业务逻辑实现了;

3.更有利于我们维护产品 和 修改需求;

4.能够让我们写出更高质量的产品的代码.

今天我们学习当前vm实例在创建到销毁的过程中,会去调用的8个生命周期函数。

依次讲解:

1、beforeCreate(){}

根据函数名的英语我们可以理解成创建完成前

这个函数是干什么的?

主要用于预加载网络资源,并不进行页面渲染,将资源缓存到本地,当页面渲染需要请求该资源时直接在本地获取。

这个函数调用时能否网络请求?

能做网络请求,因为这是函数在运行时XMLHttpRequest是可以访问并且去做AJAX请求的。

能否网络请求数据 然后设置到数据源中?

不能设置到数据源中,因为这个钩子中 this还在创建,this对象中还不能访问到数据。

2、created(){}

理解为创建完成

这个函数在项目中干什么?

请求首屏数据。

能否网络请求?

能做网络请求,因为这是函数在运行时XMLHttpRequest是可以访问并且去做AJAX请求的。

能否网络请求数据 然后设置到数据源中?

可以设置到数据源中,因为这个钩子中 this已经创建完毕了,vm对象已经创建完毕了,但是它(vm)还没有挂载到DOM树中,这个函数可以操作this对象了  但是无法操作DOM。

3、beforeMount(){}

理解为挂载完成之前

这个函数在项目中干什么?

用于渲染前的操作

能否网络请求?

能做网络请求,因为这是函数在运行时XMLHttpRequest是可以访问并且去做AJAX请求的。

能否网络请求数据 然后设置到数据源中?

能设置到数据源中,运行这个函数时,vm对象已经创建完毕了,在挂载之前触发的钩子。这个函数可以操作this对象了 但是无法操作DOM。

4、mounted(){}

理解为挂载完成

这个函数在项目中干什么?

请求首屏数据,请求时页面已经出来了,vm已经挂载到页面了。

能否网络请求?

能做网络请求,因为这是函数在运行时XMLHttpRequest是可以访问并且去做AJAX请求的。

能否网络请求数据 然后设置到数据源中?

能设置到数据源中,运行这个函数时,vm已经挂载到页面了。

5、beforeUpdate(){}

理解为页面重新渲染之前

这个函数在项目中干什么?

用于重新渲染之前的操作。

能否网络请求?

不能网络请求新数据 去更新数据源,会导致死循环。

运行这个函数时,数据源已经更新了,这个函数是页面重新渲染前(并不是数据更新前) 触发的钩子。

6、updated(){}

理解为页面重新渲染完成

这个函数在项目中干什么?

用于重新渲染完成时的操作

能否网络请求?

不能网络请求新数据 去更新数据源,也会导致死循环。

7、beforeDestroy(){}

理解为销毁完成之前

这个函数在项目中干什么?

vm对象销毁之前触发的钩子,this还在  可以做最后的操作,例如保存用户的行为配置文件:播放器的进度等等

也能做网络请求

8、destroyed(){}

理解为vm对象已经销毁

这个函数在项目中干什么?

vm对象销毁之前触发的钩子,this已经不存在,无法操作this。往往把当前组件中计时器清除了  可以把body的滚动条滚到顶部。

也能做网络请求

总结一下

beforeCreate created beforeMount mounted beforeDestroy destoryed这些钩子都只执行一次;

beforeUpdate updated第一次构建不会调用,以后每次data被更新了就会调用;

beforeDestroy destroyed 销毁的方式有两种:用户关闭和代码this.$destroy()//销毁vm实例。

只有beforeUpdate updated运行时不能做网络请求;

我们一般把网络请求放在created或者mounted中,具体的根具业务需求来;

放在created:因为有时候我们希望异步的网络请求和vm的挂载同时进行 体现出CPU多核的优势 放在mounted:因为有时候我们希望本地的UI骨架已经加载完毕以后再去请求数据刷新UI

相关文章:

  • Go语言学习笔记——正则表达式
  • 无线传感器网络数据压缩与融合及安全机制的matlab仿真
  • 【C++】红黑树的性质以及实现
  • 软件测试 -- 入门 4 软件测试原则
  • java毕业设计慢性病管理mybatis+源码+调试部署+系统+数据库+lw
  • java毕业设计旅游攻略开发系统mybatis+源码+调试部署+系统+数据库+lw
  • 工具篇 | 07 | maven
  • 数据结构——线性表之顺序表
  • 推荐一下我使用的开发工具
  • 使用C语言实现散列表中的冲突处理方法
  • COBOL--01--基础
  • 实现一个简单的 ctrl+ f 搜索
  • 脱壳工具:BlackDex的使用详解
  • 【数据挖掘】2022年京东算法工程师笔试题(23届)
  • Unet医学细胞分割实战
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 2017届校招提前批面试回顾
  • If…else
  • java取消线程实例
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Laravel 中的一个后期静态绑定
  • laravel5.5 视图共享数据
  • linux学习笔记
  • rc-form之最单纯情况
  • 当SetTimeout遇到了字符串
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 前端之Sass/Scss实战笔记
  • 最简单的无缝轮播
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • HanLP分词命名实体提取详解
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (1)(1.11) SiK Radio v2(一)
  • (4)STL算法之比较
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (理论篇)httpmoudle和httphandler一览
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • *1 计算机基础和操作系统基础及几大协议
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项
  • [BT]BUUCTF刷题第8天(3.26)
  • [BZOJ2850]巧克力王国
  • [C++] 统计程序耗时
  • [CF226E]Noble Knight's Path
  • [CSS]文字旁边的竖线以及布局知识
  • [elastic 8.x]java客户端连接elasticsearch与操作索引与文档
  • [Leetcode] Permutations II
  • [Leetcode] 寻找数组的中心索引
  • [Linux] Apache的配置与运用
  • [LWC小知识] 标准lightning-input-field怎么取得变更值(onchange)
  • [Oh My C++ Diary]结构体变量的声明