【Vue】生命周期一文详解

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

目录

前言

生命周期

钩子函数使用方法

​编辑

周期-----创建阶段

创建阶段做了些什么事

该阶段可以干什么

周期----挂载阶段

挂载阶段做了什么事

该阶段适合干什么

周期----更新阶段

更新阶段做了什么事

该阶段适合做什么

周期----销毁阶段

销毁阶段做了什么事

该阶段适合做什么


前言

Vue生命周期分为四个周期:创建、挂载、更新、销毁

生命周期

每个周期对应两个函数,对应的函数又叫钩子函数

创建:

beforeCreate()        ------        创建前

created()                ------        创建后

挂载:

beforeMount()        ------       挂载前

mounted()               ------        挂载后

更新:

beforeUpdate()        ------        更新前

updated()                -----        更新后

销毁:

beforeDestroy()        -------        销毁前

destroyed()                ------        销毁后

钩子函数使用方法

<div class="app">
        <h1>{{msg}}</h1>
        {{num}}
        <button @click="add()">+1</button>
        <button @click="destroy()">销毁</button>
    </div>
    <script>
        const vm = new Vue({
            el:'.app',
            data:{
                msg:'Vue的生命周期',
                num:1
            },
            methods:{
                add(){
                     this.num++
                },
                destroy(){
                    this.$destroy()
                }
            },
            // 创建
            // 创建前
            beforeCreate(){
                console.log('beforeCreate');
            },
            // 创建后
            created(){
                console.log('Created');
            },
            // 挂载
            // 挂载前
            beforeMount(){
                console.log('beforeMount');               
            },
            // 挂载后
            mounted(){
                console.log('Mounted');
            },
            // 更新
            // 更新前
            beforeUpdate(){
                console.log('beforeUpdata');

            },
            // 更新后
            updated(){
                console.log('Updataed');

            },
            // 销毁
            // 销毁前
            beforeDestroy(){
                console.log('beforeDestory');

            },
            // 销毁后
            destroyed(){
                console.log( 'Destoryed');

            }

        })
    </script>

【Vue】生命周期一文详解,vue,vue.js,前端,javascript

更新数据

【Vue】生命周期一文详解,vue,vue.js,前端,javascript

销毁

调用该方法

this.$destroy()

【Vue】生命周期一文详解,vue,vue.js,前端,javascript

周期-----创建阶段

生成虚拟dom

该周期包含两个钩子函数,创建前beforeCreate()和创建后Created()

所谓的创建不是指Vue实例的创建,而是指数据代理和数据监测的创建,以此来分创建前和创建后

在创建前,是无法访问data中的数据的,包括methods

例:

在原代码的基础上,访问data中的num

 //创建前

beforeCreate(){

                console.log('beforeCreate',this.num);

            }

【Vue】生命周期一文详解,vue,vue.js,前端,javascript

创建后是可以访问的,包括methods

// 创建后

            created(){

                console.log('Created',this.num);

            }

【Vue】生命周期一文详解,vue,vue.js,前端,javascript

创建阶段做了些什么事

  1. 创建Vue实例vm
  2. 初始化事件对象和生命周期
  3. 调用beforeCreate()钩子函数(此时还无法通过vm去访问data中的属性)
  4. 初始化数据代理和数据监测
  5. 调用created()钩子函数(此时数据代理和数据监测已经创建完毕,可以通过vm去访问data中的属性)
  6. 编译模板语句生成虚拟dom(此时只是生成虚拟dom,页面上还没有渲染)

该阶段可以干什么

  • beforeCreate():可以在此时加一些loading效果
  • created:结束loading效果,发送一些网络请求,获取数据,也可以添加定时器

周期----挂载阶段

生成真实dom

该阶段包含两个钩子函数,挂载前beforeMount()和挂载后mounted()

挂载前和挂载后中间存在一个真实dom的生成

而挂载前和创建后之间存在一个虚拟dom的生成

在挂载前,是无法修改页面内容的

// 挂载前

            beforeMount(){

                console.log('beforeMount');

                document.querySelector('h1').innerHTML='挂载'

            }

【Vue】生命周期一文详解,vue,vue.js,前端,javascript

挂载后是可以修改的

// 挂载后

            mounted(){

                console.log('Mounted');

                document.querySelector('h1').innerHTML='挂载'

            }

【Vue】生命周期一文详解,vue,vue.js,前端,javascript

挂载阶段做了什么事

  1. 调用beforeMount()钩子函数(此时页面还未渲染,真实dom还没生成)
  2. 给vm追加$el属性,用它来代替"el",$el代表了真实的dom元素(此时真实dom生成,页面渲染完成)
  3. 调用mounted()钩子函数

该阶段适合干什么

mounted:可以操作页面的dom元素了

周期----更新阶段

该阶段只有在data变化后才会触发,进行重新渲染

该周期包含两个钩子函数,更新前beforeUpdate()和更新后updated()

这里的更新前是指data中的数据更新了,但是页面还没重新渲染前

更新前

使用断点debugger

 // 更新前

            beforeUpdate(){

                console.log('beforeUpdata');

                debugger

            }

【Vue】生命周期一文详解,vue,vue.js,前端,javascript

更新后

解开断点

//更新后

 updated(){

                console.log('Updataed');

            }

【Vue】生命周期一文详解,vue,vue.js,前端,javascript

其中diff算法就是在更新前和更新后之间进行的,虚拟dom进行对比,生成真实dom渲染到页面

更新阶段做了什么事

  1. data发生改变(这是该阶段开始的标志)
  2. 调用beforeUpdate()钩子函数(此时只是内存中的data数据发生变化,页面还没更新)
  3. 虚拟dom重新渲染和修补
  4. 调用updated()钩子函数(此时页面已更新)

该阶段适合做什么

  • beforeUpdate:适合在更新之前访问现有的dom,例,手动清除已添加的事件监听器
  • updated:页面更新后,如果想对数据作统一处理,可以在这里完成

周期----销毁阶段

卸载监视器,子组件,事件监听器

该阶段包含两个钩子函数,销毁前beforeDestroy()和销毁后Destroy()

与其说是销毁其实是卸载,卸载Vue实例上面的所有

该阶段只有调用该方法才能进入

vm.$destroy()

销毁前

打印vue实例对象,查看监视器,销毁前,监视器还是激活状态

 // 销毁前

            beforeDestroy(){

                console.log('beforeDestory');

                console.log(this);

                debugger

            }

【Vue】生命周期一文详解,vue,vue.js,前端,javascript

虽然是激活状态,但是还是无法监听,我们在原有的代码基础上监听data中的num属性

 watch:{
                num(){
                    console.log('监听一次');
                }
            },

【Vue】生命周期一文详解,vue,vue.js,前端,javascript

当num属性值变化时,成功监听到了,当我们执行销毁时,由上得知,监听器还是在激活状态

但是以及无法监听了

销毁后

 // 销毁后

            destroyed(){

                console.log( 'Destoryed');

                console.log(this);

            }

【Vue】生命周期一文详解,vue,vue.js,前端,javascript

watcher激活状态已经成了false

销毁阶段做了什么事

  1. 调用vm.$destroy()(进入销毁阶段)
  2. 调用beforeDestroy()钩子函数(此时Vue实例还在,虽然vm上的监视器、子组件、事件监听器还在,但是无法使用了,此时修改data也不会重新渲染页面了)
  3. 卸载子组件和监视器,解绑事件监听器
  4. 调用destroyed()钩子函数(此时Vue实例还在,只是空间还未释放,销毁后指的是vm对象身上所有的东西已经解绑完成)

该阶段适合做什么

beforeDestroy:适合作销毁前的准备工作文章来源地址https://www.toymoban.com/news/detail-752950.html

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

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

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

相关文章

  • Vue.js生命周期及其应用示例

    Vue.js是一种流行的前端JavaScript框架,可以让开发人员轻松构建动态用户界面。Vue.js的一个关键特性是其生命周期系统,它允许开发人员在组件的不同阶段执行代码。在本文中,我们将探讨Vue.js生命周期的不同阶段以及如何在这些阶段执行代码,并举例说明。 Vue.js生命周期分

    2024年02月08日
    浏览(32)
  • 【前端】重学vue,vue生命周期基础知识了解一下

    上一篇有写到vue的node环境的安装,具体的地址node安装,可点过去看下安装步骤,目前去node官网下载默认是最新版本的18.15.0版本。这个版本可能有些高,可以选择跟目前项目匹配的版本下载安装即可。 如果项目启动遇到项目启动不成功,如下图 这样肯定是node版本的问题,解

    2023年04月09日
    浏览(43)
  • 深入探究Vue.js生命周期及其应用场景

    当谈到Vue.js的生命周期时,我们指的是组件在创建、更新和销毁过程中发生的一系列事件。了解Vue的生命周期对于开发人员来说是至关重要的,因为它们提供了一个机会来执行特定任务,并在不同的阶段处理组件。 Vue的生命周期可以分为八个不同的阶段:创建前、创建后、挂

    2024年02月06日
    浏览(40)
  • 【前端】Vue生命周期函数(详细讲解+中文图解)

    生命周期: 从vue实例产生开始到vue实例被销魂这段时间所经历的过程 vue实例的 创建和销毁过程 好比 人的一生从出现到死亡过程 。在其中一些 重大经历 ,也就是特殊时间点,我们可以做什么事情 在vue的一生中,从vue组件创建开始一直到其被销毁时的时间段中,也被建立了

    2024年02月13日
    浏览(30)
  • Vue生命周期函数(详解)

    目录  生命周期图 生命周期函数 beforeCreate和created的区别 beforeCreate创建前应用场景  created创建后应用场景 beforeMount和mounted的区别  beforeMount挂载前应用场景  mounted挂载后应用场景  beforeUpdate和updated的区别  beforeUpdate更新前应用场景  updated更新后应用场景  beforeDestroy和des

    2024年02月13日
    浏览(38)
  • Vue生命周期详解学习笔记

    生命周期又名生命周期回调函数,生命周期函数,生命周期钩子。 生命周期是Vue在关键时刻帮我们调用的一些特殊名称的函数。 生命周期函数的名字不可更改,但函数的具体内容是程序员根据需求编写的。 生命周期中的this指向vm或组件实例对象。 钩子函数用来描述Vue实例从

    2024年02月16日
    浏览(30)
  • Vue的生命周期的详解

    Vue的生命周期是每个使用Vue框架的前端人员都需要掌握的知识,以此作为记录。 Vue的生命周期就是vue实例从创建到销毁的全过程,也就是new Vue() 开始就是vue生命周期的开始。Vue 实例有⼀个完整的⽣命周期,也就是从开始创建、初始化数据、编译模版、挂载Dom - 渲染、更新

    2024年02月02日
    浏览(32)
  • 前端页面点击刷新-触发vue生命周期加载最新数据

    需求背景:layout布局,页面头部通过定时器获取后端消息的伪消息通知功能,在点击消息时获取所有消息总数并且刷新页面,以便触发vue的生命周期重新获取所有消息,消息展示在content中。  要触发页面刷新,可以使用vue路由的router.push方法,添加一个动态的query参数,可以

    2024年02月21日
    浏览(37)
  • Vue--》详解Vue组件生命周期的三个阶段

    目录 组件生命周期 创建阶段 beforeCreate阶段: created阶段: beforeMount阶段

    2024年01月22日
    浏览(60)
  • Vue2的生命周期(详解)

    Vue实例的生命周期: 从创建到销毁的整个过程 Vue框架内置函数,随着组件的生命周期阶段,自动执行 作用:特定的时间点,执行特定的操作 分类:四大阶段 八大方法 new Vue() – Vue实例化(组件也是一个小的Vue实例) Init Events Lifecycle – 初始化事件和生命周期函数 beforeCreate – 生命周期

    2024年02月03日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包