Vue.js 生命周期

生命周期示意图:

beforeCreate  --> 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 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

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

<!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>

监听数据变化

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

参数:

expOrFn   --> String 或 Function

callBack    --> 回调函数

options     --> 对象

options取值:  deep  --> boolean

immediate  --> boolean

用法:

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

<!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>

选项:deep   深度监视

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

vm.$watch(‘someObject‘, callback, {
  deep: true
})
vm.someObject.nestedValue = 123
// callback is fired


选项:immediate

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

vm.$watch(‘a‘, callback, {
  immediate: true
})
// 立即以 `a` 的当前值触发回调
时间: 2024-12-21 09:38:18

Vue.js 生命周期的相关文章

vue.js生命周期钩子函数及缓存

在使用vue.js进行开发时,使用最多的就是created.mounted.activated. 由于有些情况下,我们需要复用某些组件,因此需要用到keep-alive. 当引入keep-alive时,页面第一次进入,钩子的触发顺序是created-> mounted-> activated.当再次进入该页面时,只触发activated. 因此,应该activated中留一份数据获取的代码,或者不要created部分,直接将created中的代码转移到activated中. created:

8.vue的生命周期

Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.卸载等一系列过程,我们称这是Vue的生命周期.通俗说就是Vue实例从创建到销毁的过程,就是生命周期. 在Vue的整个生命周期中,它提供了一系列的事件,可以让我们在事件触发时注册js方法,可以让我们用自己注册的js方法控制整个大局,在这些事件响应方法中的this直接指向的是vue的实例. 再上图,对生命周期图的标注 特别值得注意的是created钩子函数和mounted钩子函数的区别 每个钩子函数

Vue实例生命周期+vueRoter

Vue实例生命周期 vue生命周期之beforeCreate 实例创建之前除标签外,所有的vue需要的数据,事件都不存在 vue生命周期之created 实例创建之后,data和事件已经被解析到,el还没有找到 vue生命周期之beforeMount 开始找标签,数据还没有被渲染,事件也没有被监听 vue生命周期之mounted 开始渲染数据,开始监听事件 vue生命周期之beforeUpdata 数据已经被修改在虚拟DOM,但没有被渲染到页面上 vue生命周期之updata 开始使用Diff算

VUE:生命周期

VUE:生命周期 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!-- 1.vue对象的生命周期 1)初始化显示 * beforeCreate() * created() * beforeMount() * mounted() 2)更新状态:this.xxx=va

Vue 组件生命周期钩子

Vue 组件生命周期钩子 # 1)一个组件从创建到销毁的整个过程,就称之为组件的生命周期 # 2)在组件创建到销毁的过程中,会出现众多关键的时间节点, 如: 组件要创建了.组件创建完毕了.组件数据渲染完毕了.组件要被销毁了.组件销毁完毕了 等等时间节点, 每一个时间节点,vue都为其提供了一个回调函数(在该组件到达该时间节点时,就会触发对应的回调函数,在函数中就可以完成该节点需要完成的业务逻辑) # 3)生命周期钩子函数就是 vue实例的成员 beforeCreate 组件创建了,但数据和方法还

浅谈Vue的生命周期模型

Vue实例从创建到销毁的过程,就是生命周期.Vue的生命周期包括:开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.卸载等一系列过程. 在Vue的整个生命周期中,提供了一系列的事件,可以注册JavaScript方法,达到控制整个过程的目的,在这些javascript方法中的this直接指向的是vue的实例. 在Vue的整个生命周期中,实例可以调用一些生命周期钩子,这提供了执行自定义逻辑的机会. Vue提供的生命周期钩子如下:① beforeCreate在实例初始化之后,数据观测(da

Vue实例生命周期

前面的话 Vue实例在创建时有一系列的初始化步骤,例如建立数据观察,编译模板,创建数据绑定等.在此过程中,我们可以通过一些定义好的生命周期钩子函数来运行业务逻辑.本文将详细介绍Vue实例的生命周期 图示 下图是Vue实例生命周期的图示 解释 接下来,根据提供的生命周期钩子,对Vue实例各个阶段的情况进行详细说明 [beforeCreate] 在实例开始初始化时同步调用.此时数据观测.事件等都尚未初始化 [created] 在实例创建之后调用.此时已完成数据观测.事件方法,但尚未开始DOM编译,即

vue 关于生命周期

序言: 1. vue 单组件的生命周期: 2. vue 父子组件的生命周期: 3. axios 异步请求 与 vue 的组件周期: 一.vue 每个组件的生命周期 关于每个组件的生命周期,官方文档里也提供了,网上也能搜到各路大神们的相关文章,这里不赘述,贴一个网址以及简单总结. Vue的生命周期 - 转自浅白 简单总结: 1.beforeCreate 此时 $el.data 的值都为 undefined : 2.created 此时可以拿到 data 中的值,但是 this.$el 任然是 un

vue 的生命周期

vue的生命周期就是一个vue组件从出生到死亡的过程 *** 生命周期,你需要知道它是什么时候触发. beforeCreate 在组件初始化之前 在这个生命周期中组件的数据.方法.事件都还没有. 简单来说,new Vue之后,可以理解为第一句话就调用beforeCreate 可以在loading的时候用 function Fn(age){ beforeCreate(); this.age = age; } created 当数据.方法.事件初始化之后调用. 简单点来说,当数据有初始值之后调用.