详细聊聊Vue生命周期的那些事

下面是详细聊聊Vue生命周期的攻略:

什么是Vue的生命周期?

Vue生命周期是指Vue实例从创建到销毁的整个过程,包括了数据的变化、用户的操作等各个阶段,其中也包含了组件的创建、挂在、更新和销毁等过程。

Vue的生命周期包含哪些钩子函数?

Vue的生命周期包含了以下几个钩子函数:

  1. beforeCreate:实例创建之前的钩子函数,此时的数据和方法都不存在。

  2. created:实例创建完成,此时的数据已经可以访问,但DOM还未生成。

  3. beforeMount:DOM挂载之前的钩子函数,此时数据已经与DOM关联,但并未生成DOM节点。

  4. mounted:DOM挂载之后的钩子函数,此时实例已经生成了DOM节点,并且可以操作DOM了。

  5. beforeUpdate:数据更新之前的钩子函数,此时数据已经发生变化,但DOM还未更新。

  6. updated:数据更新之后的钩子函数,此时数据已经和DOM同步,可以进行一些需要更新的操作,但注意避免在此钩子函数中修改数据,会导致死循环。

  7. beforeDestroy:实例销毁之前的钩子函数,此时实例中的数据还存在,可以进行一些清理工作。

  8. destroyed:实例销毁之后的钩子函数,此时实例已经被完全销毁,不再存在。

Vue生命周期示例

下面通过两个示例来说明Vue的生命周期:

示例一:Vue实例的初始化过程

<!DOCTYPE html>
<html>
<head>
    <title>Vue生命周期示例一</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        {{ message }}
    </div>

    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                message: 'Hello, World!'
            },
            beforeCreate: function () {
                console.log('beforeCreate')
            },
            created: function () {
                console.log('created')
            },
            beforeMount: function () {
                console.log('beforeMount')
            },
            mounted: function () {
                console.log('mounted')
            },
            beforeUpdate: function () {
                console.log('beforeUpdate')
            },
            updated: function () {
                console.log('updated')
            },
            beforeDestroy: function () {
                console.log('beforeDestroy')
            },
            destroyed: function () {
                console.log('destroyed')
            }
        })
    </script>
</body>
</html>

在初始化Vue实例的过程中,我们在各个生命周期函数中加入了console.log输出,可以依次观察到控制台输出了这些信息:

beforeCreate
created
beforeMount
mounted

这表明Vue实例在被创建后,先执行了beforeCreate和created钩子函数,然后进行了DOM的挂载(beforeMount和mounted),整个过程中,数据和DOM依次建立了联系。

示例二:Vue实例的销毁过程

<!DOCTYPE html>
<html>
<head>
    <title>Vue生命周期示例二</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        {{ message }}
    </div>

    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                message: 'Hello, World!'
            },
            beforeCreate: function () {
                console.log('beforeCreate')
            },
            created: function () {
                console.log('created')
            },
            beforeMount: function () {
                console.log('beforeMount')
            },
            mounted: function () {
                console.log('mounted')
            },
            beforeUpdate: function () {
                console.log('beforeUpdate')
            },
            updated: function () {
                console.log('updated')
            },
            beforeDestroy: function () {
                console.log('beforeDestroy')
            },
            destroyed: function () {
                console.log('destroyed')
            }
        })

        setTimeout(function () {
            console.log('start destroy')
            vm.$destroy()
        }, 3000)
    </script>
</body>
</html>

在第二个示例中,我们在Vue实例中增加了一个延迟3秒后销毁实例的操作:

setTimeout(function () {
    console.log('start destroy')
    vm.$destroy()
}, 3000)

我们可以在控制台观察到如下的输出:

beforeCreate
created
beforeMount
mounted
start destroy
beforeDestroy
destroyed

这表明在Vue实例销毁之前,会依次执行beforeDestroy和destroyed钩子函数,整个Vue实例销毁结束。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详细聊聊Vue生命周期的那些事 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue金融数字格式化(并保留小数)数字滚动效果实现

    Vue金融数字格式化(并保留小数)数字滚动效果实现是一个在金融、商务等领域中广泛使用的功能。下面我将给出完整的实现攻略。 步骤1:使用Vue.js中的过滤器实现数字格式化 使用Vue.js的过滤器(filter)功能,我们可以将数字按照一定规律进行格式化输出。以下是一个对数字进行千分位分隔和保留两位小数的过滤器示例代码: Vue.filter(‘number…

    Vue 2023年5月27日
    00
  • Vue.js实现页面后退时还原滚动位置的操作方法

    针对“Vue.js实现页面后退时还原滚动位置的操作方法”,建议从以下三个方面进行讲解: 使用Vue Router提供的钩子函数和浏览器API实现页面还原滚动位置。 使用vue-scrollto组件实现页面回到原本位置。 示例说明。 接下来我会详细讲解这三个方面的内容。 1.使用Vue Router提供的钩子函数和浏览器API实现页面还原滚动位置 Vue Ro…

    Vue 2023年5月28日
    00
  • 深入理解Vue的插件机制与install详细

    深入理解 Vue 的插件机制与 install 详解 Vue.js 是一款高效、灵活的前端开发框架,它的插件机制能够帮助我们非常方便地将第三方库集成进 Vue 项目中,无需手动编写各种组件或指令等。 在这篇文章中,我们将深入理解 Vue 的插件机制,学习如何使用 Vue 的 install 方法扩展 Vue.js 的功能。 插件机制 Vue.js 的插件机制…

    Vue 2023年5月28日
    00
  • 关于vue中ref的使用(this.$refs获取为undefined)

    “关于vue中ref的使用(this.$refs获取为undefined)”这个问题,主要是由于vue的生命周期引起的。在组件的生命周期函数created()回调函数中是无法访问到DOM元素上的ref属性的,当然通过$refs也是无法获取到。因为这个时候组件还未被渲染出来,也就是所使用的DOM元素还不存在。所以,在组件的生命周期函数mounted()回调函数…

    Vue 2023年5月27日
    00
  • vue指令 v-bind的使用和注意需要注意的点

    下面是关于“vue指令 v-bind的使用和注意需要注意的点”的完整攻略。 1. vue指令 v-bind的使用 v-bind指令用于动态绑定html属性或Vue组件的属性。它的语法是 v-bind:属性名 或者简写成:属性名,例如: <template> <div> <a v-bind:href="url"…

    Vue 2023年5月27日
    00
  • Vue使用electron转换项目成桌面应用方法介绍

    Vue使用Electron转换项目成桌面应用方法介绍 Electron是基于Chromium和Node.js开发的流行桌面应用开发框架,它可以让你使用前端技术(如HTML、CSS和JavaScript)开发出桌面应用。而Vue是一款易用、高效的前端框架,它可以让我们快速构建响应式、可维护的Web应用程序。将二者结合起来,可以让我们更加高效地开发出高质量的桌面…

    Vue 2023年5月28日
    00
  • 简单实现Vue的observer和watcher

    首先,要实现Vue的Observer和Watcher,需要进行以下步骤: Observer: Vue中的Observer实现了数据响应式,它可以监听数据的变化并自动更新相应的视图。实现Observer需要使用ES6的Proxy对象来劫持对象或数组的访问。代码示例: function observe(obj) { if(!obj || typeof obj !…

    Vue 2023年5月28日
    00
  • Vue中v-for更新检测的操作方法

    Vue.js中的v-for指令通常用于循环渲染数组或对象,当数据更新时,Vue会自动检测更新,并更新DOM结构,但我们有时会遇到v-for更新检测失效的情况,在这种情况下,我们可以使用以下方法解决这个问题。 方法一:使用$set方法 如果在新添加元素时,Vue.js的v-for指令无法自动更新DOM,可以使用$set方法。 在下面的示例中,我们将使用一个da…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部