位置: IT常识 - 正文

Vue--》详解Vue组件生命周期的三个阶段(vue组件入门)

编辑:rootadmin
Vue--》详解Vue组件生命周期的三个阶段

推荐整理分享Vue--》详解Vue组件生命周期的三个阶段(vue组件入门),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue组件总结,vue组件实现,vue组件实现,vue组件实现原理,vue组件使用方法,vue组件入门,vue组成,vue组件入门,内容如对您有帮助,希望把文章链接给更多的朋友!

目录

组件生命周期

创建阶段

beforeCreate阶段:

created阶段:

beforeMount阶段:

mounted阶段:

运行阶段

beforeUpdate阶段:

updated阶段:

销毁阶段

beforeDestroy阶段:

destroyed阶段:

总结


组件生命周期

生命周期(Life Cycle)是指一个组件从 创建 -> 运行 -> 销毁 的整个阶段,强调的是一个时间段。

生命周期函数:是由 vue 框架提供的内置函数,会伴随着组件的生命周期,自动按次序执行。

创建阶段beforeCreate阶段:

我们在初始化事件和生命周期函数时,组件的 props/data/methods尚未被创建,都处于不可用状态。

<script>export default { props:['info'], data(){ return { message:'hello test' } }, methods:{ show(){ console.log('调用了 Test 组件的 show 方法'); } }, // 创建阶段的第一个生命周期 beforeCreate(){ console.log(this.info); //props console.log(this.message); //data this.show() //methods },}</script>

 因为不能使用 props/data/methods 但是我调用了,所有控制台报错。

created阶段:

我们已经初始化好 props、data、methods了,组件的 props/data/methods已创建好。都处于可用状态,但是组件的模板结构尚未完成!

<script>export default { props:['info'], data(){ return { message:'hello test' } }, methods:{ show(){ console.log('调用了 Test 组件的 show 方法'); } }, // 创建阶段的第二个生命周期函数 created(){ console.log(this.info); console.log(this.message); this.show() }}</script>

created生命周期函数非常常用,在日常项目开发中经常在它里面调用 methods 中的方法,请求服务器的数据,并且把请求到的数据,转存到 data 中,供 template 模板渲染的时候使用!

<template> <div> <h2>test组件--{{nums.length}}</h2> </div></template><script>export default { props:['info'], data(){ return { message:'hello test', nums:[] } }, methods:{ show(){ console.log('调用了 Test 组件的 show 方法'); }, initlist(){ const xhr = new XMLHttpRequest() xhr.addEventListener('load',()=>{ const result = JSON.parse(xhr.responseText) console.log(result); this.nums = result.data }) xhr.open('GET','请求的接口') xhr.send() } }, created(){ this.initlist() }}</script><style lang="less" scoped> div{ background-color: #f00; }</style>beforeMount阶段:

基于数据和模板,在内存中编译生成HTML结构。将要把内存中编译好的HTML结构渲染到浏览器中。此时浏览器中还没有当前组件的DOM结构。

<template> <div> <h2 id="myid">test组件--{{nums.length}}</h2> </div></template><script>export default { props:['info'], data(){}, methods:{}, beforeCreate(){}, created(){}, beforeMount(){ console.log('beforeMount'); const dom = document.querySelector('#myid') console.log(dom); }}</script>

mounted阶段:

用内存中编译生成的HTML结构替换掉el属性指定的DOM元素,已经把内存中的HTML结构,成功渲染到了浏览器之中,此时浏览器中已经包含了当前组件的DOM结构。

<template> <div> <h2 id="myid">test组件--{{nums.length}}</h2> </div></template><script>export default { mounted(){ const dom = document.querySelector('#myid') console.log(dom); }}</script>

vue完成模板解析并把初识的真实DOM元素放在页面后(挂载完毕)调用 mounted。

<template> <div> <h2 :style="{opacity}">欢迎学习Vue</h2> </div></template><script>export default { data(){ return { opacity:1 } }, mounted(){ setInterval(()=>{ //我们在使用箭头函数时,this的指向mounted自动帮我们设置好是 vm 了 this.opacity-=0.01 if(this.opacity <= 0) this.opacity = 1 },6) },}</script>

运行阶段

所谓运行阶段就是用户与组件产生交互

beforeUpdate阶段:Vue--》详解Vue组件生命周期的三个阶段(vue组件入门)

这个函数的触发的必要前提是,我们修改了 data 里面的数据。将要(注意:仅仅是将要,还没有呢)根据变化过后最新的数据,重新渲染组件的模板结构。

<template> <div> <h2 id="myid">{{message}}</h2> <button @click="message+='~'">点击修改message值</button> </div></template><script>export default { data(){ return { message:'hello test', } }, beforeUpdate(){ console.log('beforeUpdate'); //说明:点击按钮修改data值才能触发这个函数 console.log(this.message); //打印修改后的值 const dom = document.querySelector('#myid') console.log(dom.innerHTML); //打印整个文本,但并没有出现我们修改后的值,说明页面并没有重新渲染 }}</script>

updated阶段:

已经根据最新的数据,完成了组件的DOM结构的重新渲染。注意:当数据变化之后,为了能操作到最新的 DOM 结构,必须把代码写到 updated 生命周期函数中。

<template> <div> <h2 id="myid">{{message}}</h2> <button @click="message+='~'">点击修改message值</button> </div></template><script>export default { props:['info'], data(){ return { message:'hello test', } }, updated(){ console.log('updated'); console.log(this.message); //打印修改后的值 const dom = document.querySelector('#myid') console.log(dom.innerHTML); //打印整个文本,但出现了我们修改后的值,说明页面被重新渲染 }}</script>销毁阶段

完全销毁一个实例。清理它(vm)与其它实例的连接,接绑它的全部指令及事件监听器。

beforeDestroy阶段:

将要销毁此组件,此时尚未销毁,组件还处于正常工作状态。在这阶段一般做一些首尾工作。

<template> <div> <h2 id="myid">{{message}}</h2> <button @click="message+='~'">点击修改message值</button> </div></template><script>export default { props:['info'], data(){ return { message:'hello test', } }, beforeDestroy(){ console.log('beforeDestroy'); }}

destroyed阶段:

销毁当前组件的数据侦听器、子组件、事件监听等,组件已经被销毁,此组件在浏览器中对应的DOM结构已被完全移除!

直接暴力的将vm干掉,页面就不能再进行交互。设置透明的按钮也就作废了。

<template> <div> <h2 :style="{opacity}">欢迎学习Vue</h2> <button @click="opacity = 1">透明度设置为1</button> <button @click="stop">点我停止变化</button> </div></template><script>export default { data(){ return { opacity:1 } }, methods:{ stop(){ // clearInterval(this.timer) this.$destroy() } }, mounted(){ // const dom = document.querySelector('#myid') // console.log(dom); console.log('mounted',this); this.timer = setInterval(()=>{ console.log('setInterval'); this.opacity-=0.01 if(this.opacity <= 0) this.opacity = 1 },6) }, beforeDestroy(){ clearInterval(this.timer) console.log('vm即将被销毁'); }}</script><style lang="less" scoped> div{ // background-color: #f00; }</style>

1)销毁后借助Vue开发者工具看不到任何信息。

2)销毁后自定义事件会失效,但原生的DOM事件依然有效

3)一般不会在beforeDestroy操作数据,因为即使操作数据,也不会再触发更新流程了

总结

生命周期:

1)又称:生命周期回调函数、生命周期函数、生命周期钩子。

2)含义:vue在关键时刻帮助我们调用一些特殊名称的函数。

3)生命周期函数的名字不可更改,但函数的具体内容是程序员根据需求编写的。

4)生命周期函数中的this指向是 vm 或 组件实例对象。

常用的生命周期钩子:

1)mounted:发送ajax请求、启动定时器、绑定自定义事件、订阅消息等(初始化操作)

2)beforeDestroy:清除定时器、绑定自定义事件、取消订阅消息等(收尾工作)

下面是实例生命周期的图表。你现在并不需要完全理解图中的所有内容,但以后它将是一个有用的参考。

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

上一篇:机器学习——BP神经网络详细介绍及案例Python代码实现

下一篇:uni.getSystemInfo(OBJECT)

  • wegame解除限速步骤是什么(wegame取消游戏加速)

    wegame解除限速步骤是什么(wegame取消游戏加速)

  • 利用微信营销如何吸引目标用户浅析(如何利用微信营销)

    利用微信营销如何吸引目标用户浅析(如何利用微信营销)

  • word怎么插入图片(怎么在word里插图片不影响格式)

    word怎么插入图片(怎么在word里插图片不影响格式)

  • talkback怎么彻底关闭(talkback怎么彻底关闭oppo手机)

    talkback怎么彻底关闭(talkback怎么彻底关闭oppo手机)

  • airpods连上没声音过一会又断了(airpods连上无声)

    airpods连上没声音过一会又断了(airpods连上无声)

  • 打印店可以打印pdf吗(打印店可以打印小卡吗)

    打印店可以打印pdf吗(打印店可以打印小卡吗)

  • 手机微信怎么弄主题(手机微信怎么弄文档)

    手机微信怎么弄主题(手机微信怎么弄文档)

  • 手机突然黑屏一秒后又亮了(手机突然黑屏一闪一闪的怎么回事)

    手机突然黑屏一秒后又亮了(手机突然黑屏一闪一闪的怎么回事)

  • applewatch怎么看浏览器(applewatch怎么看gps和蜂窝版外观)

    applewatch怎么看浏览器(applewatch怎么看gps和蜂窝版外观)

  • 快手闪回是啥意思(快手闪进闪出有什么影响)

    快手闪回是啥意思(快手闪进闪出有什么影响)

  • 勿扰模式打几次能打通(勿扰模式打几次电话)

    勿扰模式打几次能打通(勿扰模式打几次电话)

  • 苹果备份带微信记录吗(苹果备份微信怎么备份)

    苹果备份带微信记录吗(苹果备份微信怎么备份)

  • ipad蜂窝网络机型是什么意思(iPad蜂窝网络机型要插SIM卡吗)

    ipad蜂窝网络机型是什么意思(iPad蜂窝网络机型要插SIM卡吗)

  • ipad air3电池容量(ipad air3电池健康在哪里看)

    ipad air3电池容量(ipad air3电池健康在哪里看)

  • 苹果11打电话黑屏后不亮(苹果11打电话黑屏怎么回事)

    苹果11打电话黑屏后不亮(苹果11打电话黑屏怎么回事)

  • iphone11可以双微信吗(苹果11可以用双微信不)

    iphone11可以双微信吗(苹果11可以用双微信不)

  • 抖音怎么取消生日显示(抖音怎么取消生日标签)

    抖音怎么取消生日显示(抖音怎么取消生日标签)

  • 抖音怎么申请第二个号登录(抖音怎么申请第二个账号并实名认证)

    抖音怎么申请第二个号登录(抖音怎么申请第二个账号并实名认证)

  • 笔记本电脑可以分屏吗(笔记本电脑可以换cpu吗?)

    笔记本电脑可以分屏吗(笔记本电脑可以换cpu吗?)

  • airpods滴滴两声什么意思(airpods嘀嘀两声)

    airpods滴滴两声什么意思(airpods嘀嘀两声)

  • 微信账号解冻后能用吗(微信账号解冻后又被冻结)

    微信账号解冻后能用吗(微信账号解冻后又被冻结)

  • 微信qq是一个公司吗(微信和qq一个公司吗)

    微信qq是一个公司吗(微信和qq一个公司吗)

  • 增加内存条怎么设置(内存条如何增加)

    增加内存条怎么设置(内存条如何增加)

  • 图片大小100px*150px怎么设置(图片大小100px*150px是多少厘米)

    图片大小100px*150px怎么设置(图片大小100px*150px是多少厘米)

  • jmgo投影仪如何连手机(jmgo投影仪如何连手机投屏)

    jmgo投影仪如何连手机(jmgo投影仪如何连手机投屏)

  • linux系统与windows系统文件权限有什么区别?(linux和windows关系)

    linux系统与windows系统文件权限有什么区别?(linux和windows关系)

  • 营业现金比率是用经营活动净流入还是经营活动流入
  • 简易计税会计分录举例
  • 网银制单了没有审核有影响吗
  • 补贴收入企业所得税
  • 费用先付款后收到发票做账
  • 企业所得税季度预缴怎么计算
  • 小规模企业有了增值税吗
  • 在建工程转什么
  • 大额存款提前取一部分怎么计息
  • 税收优惠包括哪三个方面的内容
  • 工程类一般纳税人可以开3%的税率吗
  • 个人开增值税普票有没有限额
  • 电力设备维护费增值税税率
  • 关于增值税普通发票开票信息填写要求
  • 固定资产折旧在资产负债表属于什么
  • 公账转私账用途怎么写
  • 个人消费索要公司的钱
  • 计提水电费是什么凭证
  • 抽奖获得的奖品有权转卖吗
  • 应收账款核销会计处理
  • 服装工业企业成立时间
  • 推广费属于什么税收编码
  • windows10开机很卡
  • 企业支付工商年费怎么查
  • win10用户头像错误 设置用户头像失败,请再试一次
  • 进项已抵扣发票作废账务处理
  • 交城建税的滞纳金是多少
  • 销项负数发票怎么处理
  • 担保费可以计入什么科目
  • 受托代销商品会计分录受托方
  • 交通运输企业会议记录
  • form表单中自动提交表单的按钮类型是
  • 人脸清晰化神器软件
  • 赡养老人专项附加扣除标准2023年
  • bom也称为
  • 游戏的系统架构
  • upf命令
  • python去掉文本的指定符号
  • 借款利息收入开票
  • 融资租赁业务的程序主要有
  • 帝国cms商城源码
  • 不良品扣款入什么科目
  • 一般纳税人申报表电子版
  • 使用XQuery查询DB2 XML数据
  • 对股息红利的征税
  • 人力资源劳务外包需要什么资质证书
  • 免交的增值税要交所得税吗
  • 融资性无形资产的入账价值
  • 员工奖励账务处理流程
  • 退休人员基本养老金计发表
  • 其他应收款借方负数代表什么意思
  • 公司向个人借款的会计分录怎么做
  • 自查时发现以前的事情
  • 免抵退退税额
  • 结存材料实际成本计算公式
  • 进口货物只有报关单能入账吗
  • 税控盘领了发票怎么发票读入
  • 净资产是什么意思举例说明
  • 建总账的注意事项
  • 日记账怎么设置
  • 金融企业借款费用扣除比例
  • centOS7安装MySQL数据库
  • Windows Server 2008下共享资源访问走捷径
  • 苹果电脑如何缩小屏幕显示
  • linux系统输入法锁定了怎么解开
  • 双系统麻烦吗
  • windows资源管理器停止工作怎么办
  • hpp是什么文件
  • WIN7系统屏幕亮度哪里设置
  • 自由选择工具快捷键
  • webpack使用ejs
  • python和r语言区别
  • unity里面如何删除一个项目
  • 修改文件名ren
  • nodejs集成sqlite使用示例
  • javascript模拟器
  • js中bom是什么意思
  • javascript含义
  • 陕西税务平台
  • 杭州地税局客服电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设