Vue2的生命周期(详解)

这篇具有很好参考价值的文章主要介绍了Vue2的生命周期(详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、生命周期的概念

Vue实例的生命周期: 从创建到销毁的整个过程

vue2生命周期,# 第一章 webpack+vue基础,vue.js,javascript,前端

二、钩子函数

Vue框架内置函数,随着组件的生命周期阶段,自动执行

  • 作用:特定的时间点,执行特定的操作
  • 分类:四大阶段 八大方法
    vue2生命周期,# 第一章 webpack+vue基础,vue.js,javascript,前端
    vue2生命周期,# 第一章 webpack+vue基础,vue.js,javascript,前端

三、Vue2的生命周期

3.1 初始化阶段

  1. new Vue() – Vue实例化(组件也是一个小的Vue实例)
  2. Init Events & Lifecycle – 初始化事件和生命周期函数
  3. beforeCreate – 生命周期钩子函数被执行(data和methods初始化之前)
  4. Init injections&reactivity – Vue内部添加data和methods等
  5. created – 生命周期钩子函数被执行, 实例创建(不能获取真实的DOM)
  6. 接下来是编译模板阶段 –开始分析
  7. Has el option? – 是否有el选项 – 检查要挂到哪里
    没有. 调用$mount()方法
    有, 继续检查template选项
    vue2生命周期,# 第一章 webpack+vue基础,vue.js,javascript,前端
<template>
    <div>
        <p>学习生命周期 - 看控制台的打印</p>
        <p id="mp">{{ msg }}</p>
    </div>
</template>

<script>
export default {
    //第一阶段 初始化
    //new Vue以后,vue内部给实例对象添加了一些属性和方法,data和methods初始化之前
    beforeCreate() {
        console.log('1.beforeCreate--执行')
        console.log('msg', this.msg); //undefined
    },
    //data和methods初始化以后  不能获取真实的DOM
    //场景:网络请求,注册全局事件,绑定页面滚动事件
    created() {
        console.log('2.created--执行');
        console.log('msg', this.msg); //hello word
    },
    data() {
        return {
            msg: 'hello word',
        }
    }
}
</script>

3.2 挂载阶段

  1. template选项检查
    有 - 编译template返回render渲染函数
    无 – 编译el选项对应标签作为template(要渲染的模板)
  2. 虚拟DOM挂载成真实DOM之前
  3. beforeMount – 生命周期钩子函数被执行
  4. Create … – 把虚拟DOM和渲染的数据一并挂到真实DOM上
  5. 真实DOM挂载完毕
  6. mounted – 生命周期钩子函数被执行
    vue2生命周期,# 第一章 webpack+vue基础,vue.js,javascript,前端
<template>
    <div>
        <p>学习生命周期 - 看控制台的打印</p>
        <p id="mp">{{ msg }}</p>
        <ul id="uls">
            <li v-for="item in arr">{{ item }}</li>
        </ul>
    </div>
</template>

<script>
export default {
    //第一阶段 初始化
    //new Vue以后,vue内部给实例对象添加了一些属性和方法,data和methods初始化之前
    beforeCreate() {
        console.log('1.beforeCreate--执行')
        console.log('msg', this.msg); //undefined
    },
    //data和methods初始化以后  不能获取真实的DOM
    //场景:网络请求,注册全局事件,绑定页面滚动事件
    created() {
        console.log('2.created--执行');
        console.log('msg', this.msg); //hello word
    },

    //第二阶段 挂载阶段
    //真实DOM挂载之前
    //场景 预处理data,不会触发updated钩子函数
    beforeMount() {
        console.log('3.beforeMount--执行');
        console.log(document.querySelector('#mp')) //null
        this.msg = '重新改变了'
    },
    //真实DOM挂载之后
    //获取挂载后的真实DOM
    mounted() {
        console.log('4.mounted--执行');
        console.log(document.querySelector('#mp')) //p

    },
    data() {
        return {
            msg: 'hello word',
            arr: [2, 6, 4, 2, 1],
        }
    }
}
</script>

3.3 更新阶段

  1. 当data里数据改变, 更新DOM之前
  2. beforeUpdate – 生命周期钩子函数被执行
  3. Virtual DOM…… – 虚拟DOM重新渲染, 打补丁到真实DOM
  4. updated – 生命周期钩子函数被执行
  5. 当有data数据改变 – 重复这个循环
    vue2生命周期,# 第一章 webpack+vue基础,vue.js,javascript,前端
<template>
    <div>
        <p>学习生命周期 - 看控制台的打印</p>
        <p id="mp">{{ msg }}</p>
        <ul id="uls">
            <li v-for="item in arr">{{ item }}</li>
        </ul>
        <button @click="arr.push(1000)">往数组加值</button>
    </div>
</template>

<script>
export default {
    //第一阶段 初始化
    //new Vue以后,vue内部给实例对象添加了一些属性和方法,data和methods初始化之前
    beforeCreate() {
        console.log('1.beforeCreate--执行')
        console.log('msg', this.msg); //undefined
    },
    //data和methods初始化以后  不能获取真实的DOM
    //场景:网络请求,注册全局事件,绑定页面滚动事件
    created() {
        console.log('2.created--执行');
        console.log('msg', this.msg); //hello word
    },

    //第二阶段 挂载阶段
    //真实DOM挂载之前
    //场景 预处理data,不会触发updated钩子函数
    beforeMount() {
        console.log('3.beforeMount--执行');
        console.log(document.querySelector('#mp')) //null
        this.msg = '重新改变了'
    },
    //真实DOM挂载之后
    //获取挂载后的真实DOM
    mounted() {
        console.log('4.mounted--执行');
        console.log(document.querySelector('#mp')) //p
    },
    
    //第三阶段 更新阶段
    //更新之前
    beforeUpdate() {
        console.log('beforeUpdate--执行');
        console.log(document.querySelectorAll('#uls>li'))
        //点击button按钮  往数组追加一条数据
        console.log(document.querySelectorAll('#uls>li')[5]) //undefined
    },
    //更新之后
    // 场景:获取更新后的真实DOM
    updated() {
        console.log('updated--执行了');
        console.log(document.querySelectorAll('#uls>li')[5]) //li
    },
    data() {
        return {
            msg: 'hello word',
            arr: [2, 6, 4, 2, 1],
        }
    }
}
</script>

<style scoped></style>

3.4 销毁阶段

  1. 当$destroy()被调用 – 比如组件DOM被移除(例v-if)
  2. beforeDestroy – 生命周期钩子函数被执行
  3. 拆卸数据监视器、子组件和事件侦听器
  4. 实例销毁后, 最后触发一个钩子函数
  5. destroyed – 生命周期钩子函数被执行
    vue2生命周期,# 第一章 webpack+vue基础,vue.js,javascript,前端

父组件

<div>
    <h1>1.生命周期</h1>
    <Lifes v-if="isShow"></Lifes>
    <button @click="isShow = false">销毁组件</button>
  </div>

子组件文章来源地址https://www.toymoban.com/news/detail-771197.html

<template>
    <div>
        <p>学习生命周期 - 看控制台的打印</p>
        <p id="mp">{{ msg }}</p>
        <ul id="uls">
            <li v-for="item in arr">{{ item }}</li>
        </ul>
    </div>
</template>

<script>
export default {
 	created() {
 	//创建一个定时器
        this.timer = setInterval(() => {
            console.log('定时器');
        }, 1000)
    },

    //第四阶段 销毁阶段
    //前提:v-if="false"  销毁Vue实例
    //场景:移除全局的事件 移除当前组件的计时器  定时器 eventBus移除事件$off方法
    beforeDestroy() {
        console.log('beforeDestroy--执行');
        clearInterval(this.timer) //销毁定时器
    },

    destroyed() {
        console.log('destroy--执行');
    },
    data() {
        return {
            msg: 'hello word',
            timer: null,//保存计时器
        }
    }
}
</script>

<style scoped></style>

到了这里,关于Vue2的生命周期(详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue2 生命周期,工程化开发入门

    1.生命周期 生命周期介绍 生命周期的四个阶段 生命周期钩子 声明周期案例 2.工程化开发入门 工程化开发和脚手架 项目运行流程 组件化 组件注册 思考:什么时候可以发送初始化渲染请求?(越早越好)什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期:就是一

    2024年02月11日
    浏览(62)
  • Vue2和Vue3生命周期映射关系及异同

    beforeCreate - 使用 setup() created - 使用 use setup() beforeMount -onBeforeMount mounted - onMounted beforeUpdate - onBeforeUpdate updated - onUpdated beforeDestroy- onBeforeUnmount destroyed -onUnmounted activated - onActivated deactivated - onDeactivated errorCaptured - onErrorCaptured beforeCreate - 使用 setup() 函数替代 Vue 2 中的 beforeCrea

    2024年01月24日
    浏览(51)
  • Vue2 的@hook 、 hook: 与生命周期

    优点:简单易上手 缺点:此种方法子组件必须是自己编写的组件,若引用第三方库这种方式则不可行 官方文档并没有太多相关解释,只在处理边界情况 #程序化的事件侦听器— Vue.js (vuejs.org)里有出现。 子组件无需相关处理就能实现侦听,这块的实现原理可以从源码里探究部

    2024年02月05日
    浏览(47)
  • Vue2(生命周期,列表排序,计算属性和监听器)

    前言 上一章博客我们讲解了Vue基础 这一章我们来讲Vue生命周期,列表过滤,计算属性和监听器 一,生命周期 通常也叫生命周期回调函数、生命周期函数、生命周期钩子 vue初始化时在不同的阶段调用的不同函数 生命周期函数的 this 指向为vue实例,名字不能更改 1.1,生命周期函

    2024年02月13日
    浏览(55)
  • 从Vue2到Vue3【一】——Composition API(第一章)

    内容 链接 从Vue2到Vue3【零】 Vue3简介 从Vue2到Vue3【一】 Composition API(第一章) 从Vue2到Vue3【二】 Composition API(第二章) 从Vue2到Vue3【三】 Composition API(第三章) 从Vue2到Vue3【四】 Composition API(第四章) Vue3作为Vue.js框架的最新版本,引入了许多令人激动的新特性和改进。其

    2024年02月16日
    浏览(32)
  • 【Vue2.0源码学习】生命周期篇-初始化阶段(initInjections)

    本篇文章介绍生命周期初始化阶段所调用的第四个初始化函数—— initInjections 。从函数名字上来看,该函数是用来初始化实例中的 inject 选项的。说到 inject 选项,那必然离不开 provide 选项,这两个选项都是成对出现的,它们的作用是:允许一个祖先组件向其所有子孙后代注

    2024年02月09日
    浏览(51)
  • 【Vue2.0源码学习】生命周期篇-初始化阶段(initState)

    本篇文章介绍生命周期初始化阶段所调用的第五个初始化函数—— initState 。 从函数名字上来看,这个函数是用来初始化实例状态的,那么什么是实例的状态呢?在前面文章中我们略有提及,在我们日常开发中,在 Vue 组件中会写一些如 props 、 data 、 methods 、 computed 、 watc

    2024年02月09日
    浏览(54)
  • Vue2技能树(3)-声明式渲染、指令大全、生命周期函数

    👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! Vue2技能树(1)-介绍、导入使用、响应式数据绑定、组件化开发 vue2技能树(2)-模板语法、vue的工具链、渐进式框架 Vue2技能树(3)-声明式渲染、指令大全、生命周

    2024年02月07日
    浏览(51)
  • Vue2-收集表单数据、过滤器、内置指令与自定义指令、Vue生命周期

    🥔:我徒越万重山 千帆过 万木自逢春 更多Vue知识请点击——Vue.js 1、不同标签的value属性 若: input type=\\\"text\\\"/ 普通输入框,则v-model收集的是value值,用户输入的就是value值。 若: input type=\\\"radio\\\"/ 单选框,则v-model收集的是value值,且要给标签配置value值。 若: input type=\\\"checkb

    2024年02月13日
    浏览(49)
  • #Uniapp:uni-app中vue2生命周期--11个

    uni-app中vue2生命周期 生命周期钩子 描述 H5 App端 小程序 说明 beforeCreate 在实例初始化之后被调用 详情 √ √ √ created 在实例创建完成后被立即调用 详情 √ √ √ beforeMount 在挂载开始之前被调用 详情 √ √ √ mounted 挂载到实例上去之后调用 详情 注意:此处并不能确定子组件

    2024年02月02日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包