vue生命周期钩子函数详细示例代码GIF动态图解释

316 篇文章 79 订阅
订阅专栏

Vue 实例从创建到销毁的过程,就是生命周期。也就是从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程,我们称这是 Vue 的生命周期

生命周期阶段描述
beforeCreated创建前vue实例的挂载元素$el和数据对象data都为undefined,还未初始化。
created创建后vue实例的数据对象data有了,$el还没有。
beforeMount模板载入前vue实例的$el和data都初始化了,但还是挂载之前为虚拟的dom节点,data.message还未替换
mounted模板载入后vue实例挂载完成,data.message成功渲染。
beforeUpdate组件更新前组件更新之前调用
updated组件更新后组件更新之后调用
beforeDestroy组件销毁前调用$destroy方法后,立即执行beforeDestroy
pdestroyed组件销毁后组件销毁后调用,此时只剩下dom空壳

1、 页面渲染期

beforeCreate()  created()   页面创建之前 / 完成

beforeMount()  mounted() 页面挂载之前 / 完成

2、页面更新期

beforeUpdate()  updated()  页面更新之前 / 完成

3、页面销毁

beforeDestroy()  destroyed()  页面销毁之前  /  完成

动态演示图

注意:当你销毁vue实例后,再去挂载,你会发现,页面更新期钩子函数失效了

vue生命周期钩子函数演示@ JackieDYH

 

实例代码 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- <script src="../node_modules/vue/dist/vue.js"></script> -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <input type="text" v-model="msg">
        <p>{{ msg }}</p>
    </div>
    <button class="destroy">销毁</button>
    <button class="mount">挂载</button>
    <script>
        let vm = new Vue({
            el:'#app',
            data:{
                msg:"vue生命周期"
            },
            // 1执行顺序和声明顺序无关
            //页面渲染期
            beforeCreate(){
                console.log('--------beforeCreate 创建之前--------');
                console.log('$el:',this.$el);//undefined
                console.log('$data:',this.$data);//undefined
                console.log('this.msg:',this.msg);//undefined
            },
            created(){
                console.log('--------created 创建完成--------');
                console.log('$el:',this.$el);//undefined
                console.log('$data:',this.$data);//Object
                console.log('this.msg:',this.msg);//vue生命周期
            },
            beforeMount(){
                console.log('--------beforeMount 挂载之前--------');
                console.log('$el:',this.$el);//<div id="app">.值还没有解析.</div>
                console.log('$data:',this.$data);//Object
                console.log('this.msg:',this.msg);//vue生命周期
            },
            mounted(){
                console.log('--------mounted 挂载完成--------');
                console.log('$el:',this.$el);//<div id="app">.已经解析成data中对应值.</div>
                console.log('$data:',this.$data);//Object
                console.log('this.msg:',this.msg);//vue生命周期
            },
            // 2页面更新期
            beforeUpdate(){
                console.log('--------beforeUpdate 更新之前--------');
                console.log('$el:',this.$el);//<div id="app">.已经更新成data中对应值.</div>
                console.log('$data:',this.$data);//Object
                console.log('this.msg:',this.msg);//vue生命周期更新了
            },
            updated(){
                console.log('--------updated 更新完成--------');
                console.log('$el:',this.$el);//<div id="app">.已经更新成data中对应值.</div>
                console.log('$data:',this.$data);//Object
                console.log('this.msg:',this.msg);//vue生命周期更新了
            },
            // 3页面销毁
            beforeDestroy(){
                console.log('--------beforeDestroy 销毁之前--------');
                console.log('$el:',this.$el);//<div id="app">.data中对应值.</div>
                console.log('$data:',this.$data);//Object
                console.log('this.msg:',this.msg);//vue生命周期
            },
            destroyed(){
                console.log('--------destroyed 销毁完成--------');
                console.log('$el:',this.$el);//<div id="app">.data中对应值.</div>
                console.log('$data:',this.$data);//Object
                console.log('this.msg:',this.msg);//vue生命周期
            }
        });
        // console.log(vm);
        const desBtn = document.querySelector(".destroy");
        const mouBtn = document.querySelector(".mount");
        desBtn.onclick = function(){
            vm.$destroy();//销毁vue实例
        }
        mouBtn.onclick = function(){
            vm.$mount();//挂载vue实例 但 更新周期 不会执行了
        }
    </script>
</body>
</html>

 

vue裁剪gif片并保持gif的动效果(限时免费)
08-04
vue裁剪gif片并保持gif的动效果,下载可直接运行,demo简洁易懂,可直接使用,效果见https://blog.csdn.net/qq_32442973/article/details/117398384
vue3生命周期--钩子函数解(中文版).svg
11-02
vue3生命周期--钩子函数解(中文版)
Vue2生命周期详细讲解——周期示、代码演示变化
热门推荐
Concise200的博客
02-24 1万+
结合Vue官网生命周期示,通过代码调用每个生命周期函数,深刻理解每个生命周期钩子
2024年前端最新vue裁剪gif片并保持动画效果,借花献佛
最新发布
2301_82244509的博客
05-07 202
:‘确定’}}
vue裁剪gif片并保持动画效果
纸飞机博客
05-30 4826
本案例中只针对gif做了处理,裁剪gif后,裁剪出来的片仍然可以保持动画,这解决了以往gif裁剪只能裁剪出一帧的问题。
vue中利用gif.js实现GIF下载
纳兹咩SAMA的博客
06-10 4146
gif.js可以将帧或者canvas拼成新的gifgif.js没有npm install的库,引用方式:1. 下载资源 首先从官方仓库上下载代码,worker不能跨域,所以资源必然是放在本地的。下载后可以放在public/全局引入,但会污染公共资源,所以不采取这样做。 下载资源后,将dist目录下的dist/gif.js 本体和对应的处理 worker 文件 dist/gif.worker.js ,拷贝放在目录引用的文件夹处。 注:将两个代码中的最后一行 sourceMap url 删除,这样可以不需要
vue引用动态gif
OnlyJally的博客
01-05 3102
vue引用动态片如果直接引用地址会出现bug需要通过`require`和`replace`配合引用
vue生命周期钩子函数简单示例
12-29
本文实例讲述了vue生命周期钩子函数。分享给大家供大家参考,具体如下: <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <title>www.jb51.net vue生命周期钩子函数...
深入理解Vue父子组件生命周期执行顺序及钩子函数
10-18
本文通过实例代码给大家介绍了Vue父子组件生命周期执行顺序及钩子函数的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
Vue 2.0中生命周期钩子函数的一些理解
08-30
主要给大家介绍了关于Vue 2.0中生命周期钩子函数的相关资料,对大家学习或者使用vue2.0具有一定的参考学习价值,需要的朋友们下面随小编一起来看看吧。
vue + gifshot 实现GIF
xm_w_xm的博客
01-06 2716
gitshot地址 index.html 文件中引入 <script src="https://cdn.bootcdn.net/ajax/libs/gifshot/0.3.2/gifshot.js"></script> <template> <div class="makeGif"> <div id="gif"></div> </div> </template> <scr...
GIF生成器 轻松生成GIF动态
01-24
GIF生成器,可以轻松生成GIF动态 完美 控制大小 和长宽比
解决Vue动态加载本地片问题
10-16
主要介绍了Vue如何动态加载本地片的相关知识,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
vuegif动态,循环播放+闪烁问题
weixin_52004060的博客
03-03 3993
循环播放: 用定时器,片路径后面加随机数 片闪烁: 片预加载 下面贴代码: mounted(){ this.timer= setInterval(()=>{ this.bgGif= require('../../assets/main/bgGif.gif')+'?'+Math.random()//添加随机数 this.loadImage(this.bgGif,this.setImage) },700) }, loadImg
vue项目将多张片生成一个gif
yuanfanlove的博客
05-05 1732
gif.worker.js文件最后声明一个函数,将该文件除了注释部分的代码之外的所有代码复制变成文本,然后给一个变量。进行函数处理, 需要获取到所有的地片canvas元素,然后通过canvas转换成片。生命函数将复制的代码文本转化成 blob,然后转化成url的形式。当前做项目有一个需求是将多张片生成一个gif的形式。然后就可以生成gif片啦 可以看一下下面的片哦。下载好的包找到下面这个两个文件,引入到本地项目中去。将引入进来的两个包中的最后一行代码注释,避免映射。
Vue项目中使用gif.js方法及注意事项
hoaxxcj的博客
04-12 3914
前言:最近遇到一个需求,要将canvas转换成gif。网上大部分解决方案是利用gif.js(官方地址:https://github.com/jnordberg/gif.js)。由于没有现成的npm库,官网说明只能直接引入js。 由于每个Vue项目用的版本不同,静态资源存放路径也不同,所以我就以Vue2.0为例教大伙正确引入gif.js及gif.worker.js。 首先,在项目index.html文件中引用外部js<scripttype="text/javascript"src="ht..
Vue中的表单绑定(全 gif 演示)
卓越无关环境,保持空杯心态——靡不有初,鲜克有终
03-22 991
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <...
Vue+Openlayer实现gif动态
~~
08-26 969
<!--LjOlGif--> <template> <div class="LjOlGif">LjOlGif</div> </template> <script> import "ol/ol.css"; import { Vector as VectorSource } from "ol/source"; import { Vector as VectorLayer } from "ol/layer"; import GeoJ.
vue页面添加动态
qq_48981718的博客
09-08 3180
<div class="myDesk-page" :style="{'background': 'url(' + require('../assets/img/777.gif')+ ')',}"> <div class="left-area"> <div> <img src="../assets/img/777.gif" width="100%" height="100%" alt=""/> </div&gt.
vue生命周期 钩子函数
10-26
Vue生命周期钩子函数可以让我们在Vue实例的不同阶段添加自定义的逻辑代码,以便更好地控制Vue实例的行为。Vue生命周期钩子函数可以分为8个阶段,分别是:创建前、创建后、挂载前、挂载后、更新前、更新后、销毁前和...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 纯HTML个人简历模板代码 155028
  • 移动硬盘插到电脑后显示在设备和打印机解决办法 23989
  • 使用Js将图片转换为base64格式-在线示例 22011
  • npm i安装包依赖时 gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env 21356
  • linux系统切换root用户的多种方式 19718

分类专栏

  • 编码小技巧 付费 66篇
  • ERROR 付费 31篇
  • 文档 付费 20篇
  • 程序猿面试题 付费 64篇
  • HTML 172篇
  • Vue 316篇
  • JavaScript 360篇
  • nodeJS 36篇
  • React 23篇
  • 小程序 57篇
  • HarmonyOS 1篇
  • 实验案例 42篇
  • TypeScript 8篇
  • Docker 7篇
  • Linux 6篇
  • 网络 24篇
  • 数据库 1篇
  • 数据可视化 23篇
  • 软件使用 71篇
  • 教程笔记 55篇
  • 区块链 13篇
  • 心得 3篇

最新评论

  • 生成二维码图片插件-vue-qrcode

    JackieDYH: 请在我博客中 搜索 二维码 查看相关

  • 生成二维码图片插件-vue-qrcode

    JackieDYH: 请在我博客中 搜索 二维码 查看相关

  • 生成二维码图片插件-vue-qrcode

    limengling_2015: 怎么下载二维码

  • Vue版富文本编辑器-vue-quill-editor-配置案例

    坦途,: 可以用这个给后端传pdf那种文件吗,或者图片文件

  • Vue上实现上下左右无缝滚动、单步滚动-demo

    我的马鸭: 这种如果数据量太大,页面插入dom太多,导致卡顿怎么办

大家在看

  • 【星海随笔】云解决方案学习日志篇(一) ELK,kibana,Logstash安装 738
  • 普通碗有什么仪器设备可以看得透里面东西 324
  • mini web框架示例 125
  • ArcGIS Pro SDK (三)Addin控件 1 按钮类 311
  • Django 入门指南

最新文章

  • Vue使用element-plus的table组件报错ResizeObserver loop completed with undelivered notifications.
  • GIT使用-生成SSH密钥及配置
  • JS将两个数组中的数据合并到一个数组中[[],[]]
2024
06月 6篇
05月 11篇
04月 12篇
03月 14篇
02月 6篇
01月 23篇
2023年98篇
2022年88篇
2021年249篇
2020年503篇
2019年105篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JackieDYH

谢谢您嘞!我会继续加油地

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

4617作文网淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男子给前妻转账 现任妻子起诉要回网友建议重庆地铁不准乘客携带菜筐月嫂回应掌掴婴儿是在赶虫子重庆警方辟谣“男子杀人焚尸”国产伟哥去年销售近13亿新的一天从800个哈欠开始男孩疑遭霸凌 家长讨说法被踢出群高中生被打伤下体休学 邯郸通报男子持台球杆殴打2名女店员被抓19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警两大学生合买彩票中奖一人不认账德国打算提及普京时仅用姓名山西省委原副书记商黎光被逮捕武汉大学樱花即将进入盛花期今日春分张家界的山上“长”满了韩国人?特朗普谈“凯特王妃P图照”王树国3次鞠躬告别西交大师生白宫:哈马斯三号人物被杀代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了房客欠租失踪 房东直发愁倪萍分享减重40斤方法“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火手机成瘾是影响睡眠质量重要因素考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼网友洛杉矶偶遇贾玲呼北高速交通事故已致14人死亡西双版纳热带植物园回应蜉蝣大爆发男孩8年未见母亲被告知被遗忘张立群任西安交通大学校长恒大被罚41.75亿到底怎么缴沈阳一轿车冲入人行道致3死2伤奥运男篮美国塞尔维亚同组周杰伦一审败诉网易国标起草人:淀粉肠是低配版火腿肠外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万杨倩无缘巴黎奥运男子被猫抓伤后确诊“猫抓病”春分“立蛋”成功率更高?记者:伊万改变了国足氛围奥巴马现身唐宁街 黑色着装引猜测

4617作文网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化