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

yizhihongxing

下面是详细聊聊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日

相关文章

  • Vue3通过ref操作Dom元素及hooks的使用方法

    现在我来为你详细讲解“Vue3通过ref操作Dom元素及hooks的使用方法”的完整攻略。 1. 关于Vue3的Ref 在Vue3中,ref函数用于创建一个响应式的对象,该对象的值可以跨越组件之间进行传递和更新。它的语法如下: const foo = ref(initialValue) 其中,initialValue可以是任何JavaScript类型的初始值…

    Vue 2023年5月28日
    00
  • 一定要知道的 25 个 Vue 技巧

    一定要知道的 25 个 Vue 技巧攻略 Vue.js 是一个轻量级的 JavaScript 框架,其强大的数据绑定和组件化设计使得它成为了在前端开发中最热门的框架之一。在本文中,我将会向你介绍一些常用的 Vue 技巧,以帮助你更好的利用 Vue 的能力。 技巧 1:使用 v-cloak 防止 FOUC FOUC (Flash of Unstyled Con…

    Vue 2023年5月27日
    00
  • vue中向data添加新属性的三种方式小结

    下面是详细讲解 “vue中向data添加新属性的三种方式小结” 的攻略: 方式一:使用 Vue.set() 或 this.$set() Vue提供了 Vue.set() 和 this.$set() 方法,可以动态向data中添加属性,实现数据双向绑定。 <template> <div> <h2>{{ person.name…

    Vue 2023年5月28日
    00
  • JS三级可折叠菜单实现方法

    JS三级可折叠菜单是一种常见的页面交互效果,下面提供一种实现方法。 实现方法 1. HTML结构 首先,需要在HTML结构中定义菜单所需要的层级结构,示例代码如下: <ul id="menu"> <li> <a href="#">一级菜单1</a> <ul> …

    Vue 2023年5月28日
    00
  • VueX安装及使用基础教程

    VueX是Vue.js的状态管理库,它可以帮助我们在应用程序中管理共享状态。下面是VueX安装及使用基础教程的完整攻略。 安装 # 使用npm安装 npm install vuex –save # 使用yarn安装 yarn add vuex 使用 首先,在Vue.js中使用VueX,我们需要将其添加到我们的Vue.js应用程序中。可以使用以下代码在Vue…

    Vue 2023年5月27日
    00
  • vue-cli是什么及创建vue-cli项目的方法

    请您听我讲解「vue-cli是什么及创建vue-cli项目的方法」的完整攻略: 一、什么是vue-cli vue-cli 是 Vue.js 的官方工具,它可以给我们创建一个基于 Vue.js 的完整项目。当我们需要创建一个新的 Vue 项目时,使用 vue-cli 工具可以帮助我们完成很多基础设置和配置,省去很多繁琐的工作,让我们快速开始一个新项目。 二、使…

    Vue 2023年5月28日
    00
  • 学习Vue组件实例

    学习Vue组件实例需要从以下几个方面入手: 1. 组件实例是什么 在Vue中,组件是可复用的代码块,可以在应用程序中多次使用。每一个组件都是Vue实例,所以它们都有自己的管理状态和生命周期方法。组件实例是一类对象,它们的数据和方法组成了组件的API,同时也定义了组件在页面上的行为和渲染。 当我们使用组件时,会实例化这个组件,得到一个组件实例。我们可以通过访问…

    Vue 2023年5月27日
    00
  • 关于Vue中的计算属性和监听属性详解

    关于Vue中的计算属性和监听属性详解 Vue是一个非常流行的前端框架,在Vue的组件中,常常会有需要根据其他数据属性计算出新的属性值供模板渲染的情况。这时候就需要使用Vue提供的计算属性。此外,Vue还提供了监听属性,用于监听数据属性的变化。 计算属性 计算属性的本质就是一个函数,可以接受其他数据属性作为其参数,根据这些参数执行一定的计算逻辑,最终得出一个新…

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