首页 > 其他分享 >8 创建、渲染、更新、销毁八个生命周期函数

8 创建、渲染、更新、销毁八个生命周期函数

时间:2023-02-09 12:06:30浏览次数:47  
标签:beforeUpdate 销毁 console log 渲染 app 周期函数 unmounted


Vue的生命周期函数(第二篇)

  • ​​场景​​
  • ​​beforeUpdate 和 updated 生命周期函数​​
  • ​​beforUnmount和unmounted生命周期函数​​
  • ​​Vue3中八个生命周期函数​​

场景

我们接着上篇文章继续学习,上篇文章只讲了Vue3中的前四个生命周期,先来简单的回顾一下。

beforeCreate():在实例生成之前会自动执行的函数

created(): 在实例生成之后会自动执行的函数

beforeMount(): 在模板渲染完成之前执行的函数

mounted(): 在模板渲染完成之后执行的函数

beforeUpdate 和 updated 生命周期函数

这两个生命周期函数在Vue中的data数据发生变化时,才会被执行,一个是在变化之前,一个是在变化之后。

我们先来看beforeUpdate函数,也就是在数据变化之前。

为了能展示这个效果,我们写一个数据变化的功能,每次点击文字都进行改变。

在上篇文章编写的 ​​handleItemClick​​​ 方法中,改变 ​​message​​ 的值。这里使用了三元运算符,代码如下:

handleItemClick() {
this.message = this.message == 'mybj123.com' ? "willem笔记" : "mybj123.com"
}

有了这个方法之后,再来编写 ​​beforeUpdate​​​ 方法。
代码如下:

beforeUpdate:当data中的数据变化时, 会立即自动执行的函数

beforeUpdate() {
console.log('beforeUpdate')
},

8 创建、渲染、更新、销毁八个生命周期函数_Vue

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Demo7</title>
<script src="https://unpkg.com/vue@next"></script>
</head>

<body>
<div id="app"></div>
</body>
<script>
const app = Vue.createApp({
data() {
return {
message: 'mybj123.com'
}
},
methods: {
handleItemClick() {
this.message = this.message == 'mybj123.com' ? "willem笔记" : "mybj123.com"
}
},
beforeUpdate() {
console.log('beforeUpdate')
},
template: "<h2 v-on:click='handleItemClick'>{{message}}</h2>"
})
const vm = app.mount("#app")
</script>
</html>

在浏览器中你是可以看出先后顺序的。
这个不太直观,如何用代码的方式看出beforeUpdate和updated区别?
我们可以通过下面这种方法。

beforeUpdate() {
console.log('beforeUpdate')
console.log(document.getElementById('app').innerHTML)
},
updated() {
console.log('updated')
console.log(document.getElementById('app').innerHTML)
},

通过这种形式,就可以清楚的看出,在beforeUpdate时,DOM的内容并没有渲染更新,而到了updated中DOM的内容已经进行了更新。

这就是两个生命周期函数的区别。

8 创建、渲染、更新、销毁八个生命周期函数_Vue_02

beforUnmount和unmounted生命周期函数

这两个生命周期函数是在Vue销毁时自动执行的函数,
一个是销毁前执行,
一个是销毁后执行。

beforeUnmount(): 当Vue应用失效时,会自动执行的函数。

unmounted(): 当Vue应用失效时,且DOM完全销毁之后,会自动执行。

我们可以先把这两个生命周期函数写在页面上,代码如下:

beforeUnmount() {
console.log('beforeUnmount')
},
unmounted() {
console.log('unmounted')
},

那如何能看到这个效果那?
这个需要在浏览器的控制台中输入销毁代码。

app.unmount()
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Demo7</title>
<script src="https://unpkg.com/vue@next"></script>
</head>

<body>
<div id="app"></div>
</body>
<script>
const app = Vue.createApp({
data() {
return {
message: 'mybj123.com'
}
},
methods: {
handleItemClick() {
this.message = this.message == 'mybj123.com' ? "willem笔记" : "mybj123.com"
}
},
beforeUnmount() {
console.log('beforeUnmount')
},
unmounted() {
console.log('unmounted')
},
template: "<h2 v-on:click='handleItemClick'>{{message}}</h2>"
})
const vm = app.mount("#app")
app.unmount()
</script>
</html>

8 创建、渲染、更新、销毁八个生命周期函数_udp_03

这时候就会打印出这两个对应的生命周期函数了。
当然你这时候如果编写程序看出页面变化,也可以通过打印innerHTML方式。来看出效果。

beforeUnmount() {
console.log('beforeUnmount')
console.log(document.getElementById('app').innerHTML)
},
unmounted() {
console.log('unmounted')
console.log(document.getElementById('app').innerHTML)
},

8 创建、渲染、更新、销毁八个生命周期函数_http_04


这时候在浏览器执行app.unmount(),会看到,在beforeUnmount方法中还是有DOM内容的,然后到了unmounted方法中,就已经没有任何的DOM内容了。

Vue3中八个生命周期函数

beforeCreate() :在实例生成之前会自动执行的函数

created() : 在实例生成之后会自动执行的函数

beforeMount() :在模板渲染完成之前执行的函数

mounted() :在模板渲染完成之后执行的函数

beforeUpdate :当data中的数据变化时, 会立即自动执行的函数

updated:当data中的数据发生变化,页面重新渲染完后,会自动执行的函数

beforeUnmount():当Vue应用失效时,会自动执行的函数

unmounted():当Vue应用失效时,且DOM完全销毁之后,会自动执行


这些生命周期虽然多,你可以成对的去记忆,这样就有四个关键节点了:

创建、渲染、更新、销毁

最主要的理解是他们是自动执行的函数。


标签:beforeUpdate,销毁,console,log,渲染,app,周期函数,unmounted
From: https://blog.51cto.com/u_13571520/6046597

相关文章

  • Vue界面渲染函数互相条用导致渲染失败的总结
    先说问题:界面上有一块区域是这样的  数据是取自一个map集合,后面的符号和过滤条件是按照对应的顺序去拿,没有直接关联,请求是按照顺序发的,但是渲染的界面有可能乱序像......
  • 网页渲染流程
    浏览器渲染引擎工作流程大致分为5步:创建DOM树--创建StyleRules--创建Render树--布局Layout(回流、重排)--绘制Painting(重绘)具体如下:1.用HTML分析器,分析HTML元素,......
  • 屏幕图像渲染原理
    对应一个客户端开发来说,平时做的的最多的就是写页面,所以有必要了解从视图代码到图像显示到屏幕上的整个过程和原理。下面以从视图代码到显示器图像的中间产物帧缓冲区图像......
  • 关于服务器端渲染的 Web 应用的 504 错误问题
    除非客户在SSR中添加了用于显式发送504的自定义逻辑,否则504不会来自SSR。在默认的Spartacus/SSR中,没有显式发送504的逻辑。默认情况下它只发送200或500(仅在......
  • 子控制器tabBarItem底部选中图片显示为自己配置的 不让系统渲染
    大环境是在tabBarController底部的各个子控制器的显示tabBarItem图片问题UIViewController*vc=[UIViewcontrolleralloc]init];vc.tabBarItem.image=[UIImageimageNa......
  • 什么是渲染农场,渲染农场一般怎么收费?
    对于用3D软件创作效果图或影视动画的艺术家们来说,应该对渲染农场并不陌生,但是对于初入CG行业的人来说,看到网上很多人说渲染农场,肯定会疑惑,什么是渲染农场?渲染农场也叫“分......
  • 什么是渲染农场,渲染农场一般怎么收费?
    对于用3D软件创作效果图或影视动画的艺术家们来说,应该对渲染农场并不陌生,但是对于初入CG行业的人来说,看到网上很多人说渲染农场,肯定会疑惑,什么是​​渲染农场​?​​渲染农场......
  • 《Vue.js 设计与实现》读书笔记 - 第7章、渲染器的设计
    第7章、渲染器的设计7.1渲染器与响应系统的结合渲染器需要有跨平台的能力。在浏览器端会渲染为真实的DOM元素。const{effect,ref}=VueReactivity//VueRea......
  • Gin框架实战——HTML渲染
      最近使用Go的Gin框架做了个简单的前端网页,记录一下细节~1.加载静态文件    由于网页需要使用css、图片等渲染,而静态文件必须先声明:否则模板中调用加载不出......
  • unity urp 衣服渲染
    正常衣服的布料分类:棉,羊毛,绒丝绸尼龙皮革还有一些特殊的比如富贵的貂那种绒毛,还有一些闪闪发光的那种。首先说一下基础的棉类的衣服。质地偏软,和之前默认的硬表面有很......