Vue.js 生命周期

简介:

生命周期示意图:

wKioL1hHqxGxe-zWAAILL5z4vV8240.pngbeforeCreate  --> Function

在实例初始化之后,数据观测(data observer)和event/watcher 事件配置之前调用



created  --> Function

实例已经创建完成之后被调用,在这一步,实例已经完成以下的配置:

> 数据观测(data observer)

> 属性和方法运算

> watch/event 事件回调



beforeMount  --> Function

在挂载开始之前被调用,相关的 render 函数首次被调用


该钩子在服务器端渲染期间不被调用




mounted  --> Function

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


该钩子在服务器端渲染期间不被调用。




beforeUpdate  --> Function

数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。

你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。


该钩子在服务器端渲染期间不被调用。




updated  --> Function

由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。

当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。


该钩子在服务器端渲染期间不被调用。




activated  --> Function

keep-alive 组件激活时调用。


该钩子在服务器端渲染期间不被调用。




deactivated  --> Function

keep-alive 组件激活时调用。


该钩子在服务器端渲染期间不被调用。





beforeDestroy  --> Function

实例销毁之前调用。在这一步,实例仍然完全可用。


该钩子在服务器端渲染期间不被调用。




destroyed  --> Function

Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。


该钩子在服务器端渲染期间不被调用。



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<!DOCTYPE html>
< html >
< head  lang = "en" >
     < meta  charset = "UTF-8" >
     < title ></ title >
</ head >
< body >
 
< div  id = "app" >
     `msg`
</ div >
 
< script  src = "//cdn.bootcss.com/vue/2.0.8/vue.js" ></ script >
< script >
     var vm = new Vue({
         el:'#app',
         data:{
             msg:'Hello Vue'
         },
         beforeCreate: function () {
             alert('实例创建之前');
         },
         created: function () {
             alert('实例已经创建');
         },
         beforeMount: function () {
             alert('实例挂载之前');
         },
         mounted: function () {
             alert('实例挂载到根元素 #app上');
         },
         beforeUpdate: function () {
             alert('数据更新之前');
         },
         updated: function () {
             alert('数据更新之后');
         },
         activated: function () {
             alert('keep-alive 组件激活时调用');
         },
         deactivated: function () {
             alert('keep-alive 组件停用时调用');
         },
         beforeDestroy: function () {
             alert('实例销毁之前调用');
         },
         destroyed: function () {
             alert('实例销毁之后调用');
         }
     })
</ script >
</ body >
</ html >


wKioL1hHsiKRpGgSAAfuIyK43dY856.gif


监听数据变化

vm.$watch(expOrFn, callBack, [options])


参数:

expOrFn   --> String 或 Function

callBack    --> 回调函数

options     --> 对象    

        options取值:  deep  --> boolean

                                 immediate  --> boolean


用法:

观察 Vue 实例变化的一个表达式或计算属性函数,回调函数得到的参数为新值和旧值,表达式只接受监督的键路径。对于更复杂的表达式,用一个函数取代。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!DOCTYPE html>
< html >
< head  lang = "en" >
     < meta  charset = "UTF-8" >
     < title ></ title >
</ head >
< body >
< div  id = "app" >
     `a`
     < br >
     `b`
</ div >
 
< script  src = "//cdn.bootcss.com/vue/2.0.8/vue.js" ></ script >
< script >
     //创建根实例
     var vm = new Vue({
         el:'#app',
         data:{
             a:123,
             b:321
         }
     });
 
     //监听数据变化
     vm.$watch('a',function(){
         alert('数据a 和 数据b 发生变化了');
         this.b = this.a + 100;
     },{deep:true});
 
     document.onclick=function(){
         vm.a =1;
     }
</ script >
</ body >
</ html >


wKioL1hHt6-y3VdzAAUkbvbA7qM088.gif


选项:deep   深度监视


为了发现对象内部值的变化,可以在选项参数中指定 deep: true 。注意监听数组的变动不需要这么做。

1
2
3
4
5
vm.$watch( 'someObject' , callback, {
   deep:  true
})
vm.someObject.nestedValue = 123
// callback is fired



选项:immediate


在选项参数中指定 immediate: true 将立即以表达式的当前值触发回调:

1
2
3
4
vm.$watch( 'a' , callback, {
   immediate:  true
})
// 立即以 `a` 的当前值触发回调

本文转自   frwupeng517   51CTO博客,原文链接:http://blog.51cto.com/dapengtalk/1880350

相关文章
|
JavaScript 开发者
[译] 监听第三方 Vue 组件的生命周期钩子
[译] 监听第三方 Vue 组件的生命周期钩子
|
开发者
vue3生命周期钩子变化
【10月更文挑战第4天】
|
监控 JavaScript 前端开发
vue学习第十二章(生命周期)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。本文深入探讨了Vue实例的生命周期,从初始化到销毁各阶段的关键钩子函数及其应用场景,帮助你更好地理解Vue的工作原理。如果你觉得有帮助,欢迎关注我,将持续分享更多优质内容!🎉🎉🎉
287 1
vue学习第十二章(生命周期)
|
JavaScript
Vue 的父组件和子组件生命周期钩子执行顺序
在 Vue 中,父组件和子组件的生命周期钩子执行顺序如下:
|
JavaScript
|
JavaScript API 开发者
Vue的生命周期,创建(Creation)、挂载(Mounting)、更新(Updating)和销毁(Destruction)。
【8月更文挑战第1天】Vue的生命周期,创建(Creation)、挂载(Mounting)、更新(Updating)和销毁(Destruction)。
315 11
|
JavaScript 前端开发 程序员
Vue学习之--------Vue生命周期beforeCreate、created、beforeMount、mounted、beforeDestroy 。。。(图解详细过程)(2022/7/17)
这篇文章详细介绍了Vue的生命周期和各个阶段的钩子函数,包括`beforeCreate`、`created`、`beforeMount`、`mounted`、`beforeUpdate`、`updated`、`beforeDestroy`和`destroyed`。文章通过图解、方法说明、代码实例和测试效果,阐述了每个钩子函数的作用和使用场景,帮助读者深入理解Vue实例从创建到销毁的整个过程。
Vue学习之--------Vue生命周期beforeCreate、created、beforeMount、mounted、beforeDestroy 。。。(图解详细过程)(2022/7/17)
|
JavaScript 前端开发 API
深入探索挖掘vue3 生命周期
【10月更文挑战第10天】
459 0
|
JavaScript 前端开发 开发者
vue生命周期
【8月更文挑战第1天】vue生命周期
275 2

热门文章

最新文章