位置: IT常识 - 正文

Vue生命周期钩子剖析(共12个钩子)(vue生命周期钩子函数)

编辑:rootadmin
Vue生命周期钩子剖析(共12个钩子)

推荐整理分享Vue生命周期钩子剖析(共12个钩子)(vue生命周期钩子函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue生命周期钩子函数各阶段特点及可以用来作什么?,vue生命周期钩子详解,vue生命周期钩子函数,vue生命周期钩子函数各阶段特点及可以用来作什么?,vue生命周期钩子函数执行顺序,vue生命周期钩子函数有哪些?,vue生命周期钩子函数各阶段特点及可以用来作什么?,vue生命周期钩子函数,内容如对您有帮助,希望把文章链接给更多的朋友!

生命周期示意图:

 生命周期及其钩子函数理解

生命周期: Vue是一个构造函数,当执行执行这个函数时,相当于初始化vue实例;在创建实例过程中,需要设置数据监听,编译模板,将实例挂载到DOM上,数据更新能够让DOM也更新,同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。

生命周期钩子函数:

生命周期钩子函数,让够让咱们在初始化实例时,添加自己的代码; 生命周期的钩子函数中的this,会默认指向vue的实例;

钩子函数汇总:

beforeCreate:是第一个生命周期函数,表示实例完全被创建出来之前会执行这个函数。在此函数执行时,data和methods中的属性与方法定义都还没有初始化。created:是第一个生命周期函数,在此函数中,data 和 methods 都已经被初始化好了。beforeMount:是第三个生命周期函数,表示模板已经在内存中编辑完成了,但是还没有被渲染到页面中。mounted:第四个生命周期函数,此时内存中的模板已经挂载到了页面中,用户可以看到渲染好的页面。mounted是实例创建期间的最后一个生命周期函数,当此函数执行完毕,表示实例已经被完全创建好了。beforeUpdate:此时界面还没有被更新。updated:updated 事件执行的时候,页面和 data 数据已经保持同步。beforeDestroy:销毁之前执行,当beforeDestroy函数执行时,表示vue实例已从运行阶段进入销毁阶段,vue实例身上所有的方法与数据都处于可用状态。destroyed:当destroy函数执行时,组件中所有的方法与数据已经被完全销毁。

其余三个钩子:

keep-alive 缓存组件 生命周期的钩子函数 activated deactivated 生命周期的钩子函数activated(:当缓存组件有被显示出来时,会触发这个钩子函数deactivated:  当缓存的组件隐藏时,会触发这个钩子函数;

errorCaptured :当子孙组件出错时,会调用这个钩子函数

还有一个隐藏的钩子,经常会用到,但注意,这个钩子不是已函数形式写在script中,而是vm实例自带的一个方法,所以在vc(VueComponent)实例上也能访问:

this.$nextTick():在下次 DOM 更新循环结束之后执行延迟回调;在修改数据之后立即使用这个方法,获取更新后的 DOM。

生命周期钩子详解及注意事项 beforeCreate()

生命周期函数被执行此时不能访问data和menthods等中的东西

created()

生命周期钩子函数被执行,实例创建此时能访问data和menthods等中的东西 接下来开始编译模板:开始分析

 template选项检查: 有:编译template返回render渲染函数 无:编译el选项对应标签作为template(要渲染的模板)vue工程项目不支持 虚拟DOM挂载成真实DOM之前:

beforeMount()Vue生命周期钩子剖析(共12个钩子)(vue生命周期钩子函数)

beforeMount :生命周期钩子函数被执行 Create vm$el and replace "el" with it:把虚拟DOM和渲染的数据一并挂到真实DOM上 挂载完毕,mounted:生命周期钩子函数被执行

mounted()

需要注意的问题,避免做项目时踩坑

在这发起后端请求,拿回数据,配合路由钩子做一些事情

详细:

el被新创建的 vm.el替换,并挂载到实例上去之后调用该钩子。如果root实例挂载了一个文档内元素,当mounted被调用时vm.el替换,并挂载到实例上去之后调用该钩子。如果root实例挂载了一个文档内元素,当mounted被调用时vm.el 也在文档内 该钩子在服务器端渲染期间不被调用。

注意: 如果在此钩子中向后台发送请求,无法立刻拿到数据,如有需要,可在watch中监听该数据调用this.$nextTick()获取更新后的数据

示例:

<template> <div class="swiper-container" ref="cur"> <div class="swiper-wrapper"> <div class="swiper-slide" v-for="(carousel, index) in list" :key="carousel.id"> <img :src="carousel.imgUrl" /> </div> </div> </div></template><script>import Swiper from "swiper";export default { props: ["list"], watch: { list: { immediate: true, handler() { if (this.list.length === 0) return this.$nextTick(() => { var mySwiper = new Swiper(this.$refs.cur, { loop: true, // 循环模式选项 // observer: true, autoplay: true, // 如果需要分页器 pagination: { el: ".swiper-pagination", clickable: true, }, // 如果需要前进后退按钮 navigation: { nextEl: ".swiper-button-next", prevEl: ".swiper-button-prev", }, // 如果需要滚动条 scrollbar: { el: ".swiper-scrollbar", }, }); }); }, }, },//错误示例mounted(){ var mySwiper = new Swiper(this.$refs.cur, {...}}};</script><style></style>

错误原因:此时获取到的v-for的数据是从后台返回过来的,这需要一定的时间,此时v-for遍历不到任何数据,在数据返回之前页面已经挂载完成,即已开始执行mounted函数,而后台数据成功获取到后再页面重新渲染生成的dom元素,所以在mounted中获取不到该dom元素

beforeUpdate()

当data里数据改变, 更新DOM之前,beforeUpdate – 生命周期钩子函数被执行此时获取不到更新的真实dom

虚拟DOM重新渲染, 打补丁到真实DOM

updated – 生命周期钩子函数开始执行,当有data数据改变 – 重复这个循环

updated()beforeDestroy()

当$destroy()被调用:比如组件DOM被移除(例v-if)

beforeDestroy:生命周期钩子函数被执行

拆卸数据监视器、子组件和事件侦听器

实例销毁后, 最后触发一个钩子函数

destroyed: 生命周期钩子函数开始执行

destroyed()activated()

在vue对象存活的情况下,进入当前存在activated()函数的页面时,一进入页面就触发;可用于初始化页面数据等。

activatedcreated触发顺序组件创建最初始created  =>  mounted >activated触发次数只在组件刚创建时创建在使用keep-alive标签中有效,每次进入都会执行钩子中的函数deactivated()

路由组件失活时执行

errorCaptured ()

子孙组件出错时调用,一般不用

this.$nextTick()

当你修改了数据,vue帮你操作完dom ,把真实的dom放入页面,vue再帮你调用$nextTick

本文链接地址:https://www.jiuchutong.com/zhishi/298416.html 转载请保留说明!

上一篇:【机器学习】KNN算法及K值的选取

下一篇:IDEA如何完美配置Servlet(适用于IDEA 2022及以下版本)(idea配置meaven)

  • 我的世界神奇宝贝怎么召唤神兽(我的世界神奇宝贝指令)

    我的世界神奇宝贝怎么召唤神兽(我的世界神奇宝贝指令)

  • 小米浏览器图标不见了(小米浏览器图标没了)

    小米浏览器图标不见了(小米浏览器图标没了)

  • 小米10超广角怎么用(小米超广角怎么打开)

    小米10超广角怎么用(小米超广角怎么打开)

  • 怎样进入1688网(怎么进去1688)

    怎样进入1688网(怎么进去1688)

  • 电脑屏幕死机卡住不能动了(电脑屏幕死机卡住和刷新率有关吗)

    电脑屏幕死机卡住不能动了(电脑屏幕死机卡住和刷新率有关吗)

  • 如何视频聊天开手电筒(视频聊天怎么开)

    如何视频聊天开手电筒(视频聊天怎么开)

  • 微信登录失败3-1是什么意思(微信登录失败该应用未获得微信登录的权限)

    微信登录失败3-1是什么意思(微信登录失败该应用未获得微信登录的权限)

  • 苹果11屏幕清晰度怎么调(苹果屏幕清晰度怎么调整)

    苹果11屏幕清晰度怎么调(苹果屏幕清晰度怎么调整)

  • 戴尔开机自检怎么取消(戴尔开机自检怎么自动打开的)

    戴尔开机自检怎么取消(戴尔开机自检怎么自动打开的)

  • ipv6无网络访问权限有什么影响(ipv6无网络访问权限怎么解决win10)

    ipv6无网络访问权限有什么影响(ipv6无网络访问权限怎么解决win10)

  • ios13.3怎么关闭自动亮度(ios13.3怎么关闭tracking)

    ios13.3怎么关闭自动亮度(ios13.3怎么关闭tracking)

  • 为什么铁路12306无法人证核验(为什么铁路12306无法查询车次信息)

    为什么铁路12306无法人证核验(为什么铁路12306无法查询车次信息)

  • 耳机转接头影响音质吗(耳机转接头影响左右声道)

    耳机转接头影响音质吗(耳机转接头影响左右声道)

  • ipad蜂窝版能打电话吗(ipad蜂窝版打电话越狱)

    ipad蜂窝版能打电话吗(ipad蜂窝版打电话越狱)

  • 京东厂家自送什么意思(京东厂家自送普通快递)

    京东厂家自送什么意思(京东厂家自送普通快递)

  • 电脑版wps怎么转发文件(电脑版wps怎么转成在线文档)

    电脑版wps怎么转发文件(电脑版wps怎么转成在线文档)

  • 三星手机反向充电怎么关闭(三星手机反向充电可以给苹果充电吗)

    三星手机反向充电怎么关闭(三星手机反向充电可以给苹果充电吗)

  • 手机微博定时发送怎么设置(手机微博定时发送)

    手机微博定时发送怎么设置(手机微博定时发送)

  • se是什么意思(瑟是什么意思)

    se是什么意思(瑟是什么意思)

  • 苹果手机的音乐文件在哪里(苹果手机的音乐播放器在哪里)

    苹果手机的音乐文件在哪里(苹果手机的音乐播放器在哪里)

  • 华为nova4可以开空调吗(华为nova4可以开门禁卡吗)

    华为nova4可以开空调吗(华为nova4可以开门禁卡吗)

  • vivos1是不是防水的(vivos1防水性能)

    vivos1是不是防水的(vivos1防水性能)

  • 腾讯视频投屏老是失败(腾讯视频投屏老是卡顿)

    腾讯视频投屏老是失败(腾讯视频投屏老是卡顿)

  • 阿斯佩山谷中的蒙塔尼翁湖,法国 (© thieury/Adobe photo stock)(阿佩勒斯)

    阿斯佩山谷中的蒙塔尼翁湖,法国 (© thieury/Adobe photo stock)(阿佩勒斯)

  • BLOG-2(Blog2N如何计算)

    BLOG-2(Blog2N如何计算)

  • 织梦DEDECMS专题标签channelid='-1'调用方法教程(织梦官方网站)

    织梦DEDECMS专题标签channelid='-1'调用方法教程(织梦官方网站)

  • 固定资产转让怎么做账
  • 企业有利润要交什么税
  • 分包从属总包选择简易计税可以吗
  • 预计销售收入增长是什么意思
  • 公允价值变动损益和投资收益区别
  • 公司对供应商罚款合法吗
  • 企业间借款利息怎么算
  • 销售农业产品的税率
  • 公司收到转账支票怎么盖章
  • 实际报销人是什么意思
  • 影响所得税金额的因素有哪些
  • 以前年度亏损本季度盈利所得税
  • 增值税税控盘抵减
  • 税友服务费能否抵扣
  • 提供餐饮服务的税率
  • 文化事业建设税计算方法
  • 补记去年收入分录
  • 每月收到融资租赁费利息发票
  • 注册资本变更需要去税务局吗
  • 分配利润怎么做科目
  • 商品流通企业代表企业
  • 一般个体户核定税率多少
  • 办公室房租计入什么科目
  • 银行承兑汇票没有提示付款
  • 收到租金税率
  • 基建期增值税如何抵扣
  • wim文件用什么软件打开
  • windows为什么从7开始
  • 会计的运费怎么写分录
  • mac双系统切换键
  • windows11关机在哪
  • nvcpl.dll是什么
  • 银行存款转定期存款分录
  • 促销商品的方法
  • 发票金额与银行付款金额少几分钱
  • 外贸企业出口免抵退
  • 资产盘盈盘亏处理
  • php计算多个集合的数据
  • 房地产预缴所得税计算公式
  • yolov8训练自己的数据集 Windows
  • 快速傅里叶变换matlab
  • 什么是付出对价的公允
  • 增值税为什么不能在税前扣除
  • 营业收入净额是销售收入净额吗
  • mysql怎么实现原子性
  • 已经费用化的研发支出还可以资本化吗
  • 建筑行业小规模纳税人和一般纳税人
  • 公司注销时发现有预付款
  • 工资里计提五险什么意思
  • 没有报关单可以出口吗
  • 现金日记账金额怎么填写
  • 新三板奖励
  • 印花税需要计提税金及附加吗
  • 累计折旧余额在哪方
  • fedora debian ubuntu
  • 在Windows Server 2008中配置FTP服务
  • 严密防范什么安全风险,严厉打击敌对势力犯罪
  • windows模拟器(可安装电脑软件)
  • ati2mdxx.exe是什么进程 ati2mdxx进程信息查询
  • ubuntu系统安装nvidia显卡驱动
  • korok是什么文件
  • windows 8
  • cocos2dx游戏开发框架
  • nodejsweb框架
  • pyinstaller如何用
  • python截取数据
  • three.js入门指南
  • jquery日期插件
  • shell脚本中实现rm -fr !(file1)
  • Unity3D游戏开发(第2版)pdf
  • python中的堆和栈
  • pythontrutle
  • 副局长哪里任命
  • 实名办税信息采集的身份证件
  • 税务注销核对发票怎么办
  • 多缴税款可以抵滞纳金吗?
  • 铁路检察院和普检哪个好
  • 山西省税务
  • 广东省电子税务局官网
  • 湖北航天金税盘服务器地址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设