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

Vue2 —— 学习(五)

一、生命周期

(一)引入案例

我们想让一行文字按一定频率逐渐变得透明

1. Vue 实例外写法

函数写在 Vue 实例外面也能实现但是不推荐 

<body><div id="root"><h2 :style="{opacity}">欢迎学习Vue</h2></div><script>const vm = new Vue({el: '#root',data: {opacity: 1}})setInterval(() => {vm.opacity -= 0.01if (vm.opacity <= 0)vm.opacity = 1}, 16);</script>
</body>
 2. Vue 实例内写法

写在 Vue 里面 不能写在 methods 里面 因为数据一变就调用定时器,一直在变,一直调用定时器就坏了 指数级调用 有很大隐患

所以我们要单独写在一个函数中,它和 data 对象并列 名字是 mounted(){} 挂载函数

Vue 完成解析并将初始的 dom 元素放入页面后 挂载完毕 才调用 mounted 这样就不会出现上面问题了

 const vm = new Vue({el: '#root',data: {opacity: 1},mounted() {setInterval(() => {this.opacity -= 0.01if (this.opacity <= 0)this.opacity = 1}, 16);},})

(二)生命周期函数

又名生命周期回调函数 生命周期钩子

像 mounted(){} 这个函数一样 的在 Vue 实例工作的时候 只有在特殊的时间点才进行调用的函数就叫生命周期函数,关键的时间点调用一些关键的函数,生命周期函数中的this 指向是 Vue 实例

(三)生命周期函数挂载流程

第一个生命周期

beforeCreat(){

}

还没进行数据代理 vm 中还没有 _data 对象

第二个生命周期

created(){

}

在进行数据监测和数据代理后

第三个生命周期

beforeMount(){

}

未经解析的 dom 结构 里面对 dom 操作无效

第四个生命周期 

mounted(){

}

经过解析的的 dom 里面可以对dom 进行操作

 template 能更新 根节点 里面只能写一个根元素,不然会报错,拿template 最外层的元素当根节点然后替换掉原来的模板,记住前面学过的 <template></template> 标签不能作为这个 模板的根节点

<body><div id="root"></div><script>const vm = new Vue({el: '#root',template: ` <div><h2>当前的n 值是{{n}}</h2><button @click="add">点我n+1</button></div>`,data: {n: 1},methods: {add() {this.n++}},})</script>
</body>

 

相关文章:

  • uniapp:Hbuilder没有检测到设备请插入设备或启动模拟器的问题解决
  • redis配置信息
  • nacos derby.log无法的读取+derby数据库启动失败分析解决
  • 论文学习D2UNet:用于地震图像超分辨率重建的双解码器U-Net
  • pinia数据持久化
  • 【ControlNet v3版本论文阅读】
  • 发挥自定义表单开源优势,助力实现流程化办公!
  • Android输入框架
  • vue vue3 手写 动态加载组件
  • SQL注入sqli_labs靶场第五、六题
  • 嵌入式:第一天(c语言入门)
  • 基于Java+SpringBoot+Vue实验室安全考试系统(源码+文档+部署+讲解)
  • Linux函数学习 fork
  • RabbitMQ3.13.x之六_RabbitMQ使用场景
  • 【算法-数组】二分查找法
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Android优雅地处理按钮重复点击
  • AngularJS指令开发(1)——参数详解
  • CODING 缺陷管理功能正式开始公测
  • exif信息对照
  • github指令
  • Git的一些常用操作
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • React组件设计模式(一)
  • Redash本地开发环境搭建
  • Service Worker
  • 规范化安全开发 KOA 手脚架
  • 码农张的Bug人生 - 见面之礼
  • 前端
  • 入门到放弃node系列之Hello Word篇
  • 手写一个CommonJS打包工具(一)
  • 通过几道题目学习二叉搜索树
  • 我有几个粽子,和一个故事
  • 学习使用ExpressJS 4.0中的新Router
  • 译米田引理
  • Prometheus VS InfluxDB
  • !!java web学习笔记(一到五)
  • ###C语言程序设计-----C语言学习(6)#
  • #define与typedef区别
  • #vue3 实现前端下载excel文件模板功能
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (九十四)函数和二维数组
  • (已解决)什么是vue导航守卫
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)ORM
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版