浅谈Vue.js 1.x 和 2.x 实例的生命周期

浅谈Vue.js 1.x 和 2.x 实例的生命周期

什么是Vue.js生命周期?

在Vue.js中,组件在创建,挂载,更新,销毁等过程中,会触发一系列的生命周期函数,这些函数被称为Vue.js的生命周期函数。

Vue.js 1.x生命周期

Vue.js 1.x版本的生命周期图如下:

graph TD
A(created) --> B(beforeCompile)
B(beforeCompile) --> C(compiled)
C(compiled) --> D(ready)
D(ready) --> E(beforeDestroy)
E(beforeDestroy) --> F(destroyed)
  1. created:组件被创建时调用,此时组件的属性等信息还未挂载到DOM中。
Vue.component('my-component', {
  created: function () {
    console.log('my-component created')
  }
})
  1. beforeCompile:生命周期钩子,在模板编译开始前调用。此时已经可以访问到组件的模板和数据对象。
Vue.component('my-component', {
  beforeCompile: function () {
    console.log('my-component beforeCompile')
  }
})
  1. compiled:生命周期钩子,在模板编译结束后调用。在此时网页中的HTML已经生成。
Vue.component('my-component', {
  compiled: function () {
    console.log('my-component compiled')
  }
})
  1. ready:组件挂载到DOM中时触发。
Vue.component('my-component', {
  ready: function () {
    console.log('my-component ready')
  }
})
  1. beforeDestroy:组件销毁时调用,此时组件的属性等信息还未被销毁。
Vue.component('my-component', {
  beforeDestroy: function () {
    console.log('my-component beforeDestroy')
  }
})
  1. destroyed:组件完全销毁后触发。
Vue.component('my-component', {
  destroyed: function () {
    console.log('my-component destroyed')
  }
})

Vue.js 2.x生命周期

Vue.js 2.x版本的生命周期图如下:

graph TD
A(created) --> B(beforeMount)
B(beforeMount) --> C(mounted)
C(mounted) --> D(beforeUpdate)
D(beforeUpdate) --> E(updated)
E(updated) --> F(beforeDestroy)
F(beforeDestroy) --> G(destroyed)
  1. created:和Vue.js 1.x版本一样,在组件被创建时调用,此时组件的属性等信息还未挂载到DOM中。
Vue.component('my-component', {
  created: function () {
    console.log('my-component created')
  }
})
  1. beforeMount:开始挂载模板时调用,此时DOM节点还未生成。
Vue.component('my-component', {
  beforeMount: function () {
    console.log('my-component beforeMount')
  }
})
  1. mounted:模板挂载结束时调用。此时组件DOM已经生成。
Vue.component('my-component', {
  mounted: function () {
    console.log('my-component mounted')
  }
})
  1. beforeUpdate:状态更新前调用,此时组件内部修改数据。
Vue.component('my-component', {
  beforeUpdate: function () {
    console.log('my-component beforeUpdate')
  }
})
  1. updated:状态更新后调用,此时组件已经更新完成。
Vue.component('my-component', {
  updated: function () {
    console.log('my-component updated')
  }
})
  1. beforeDestroy:销毁前调用,此时组件还未销毁。
Vue.component('my-component', {
  beforeDestroy: function () {
    console.log('my-component beforeDestroy')
  }
})
  1. destroyed:销毁后调用,此时组件已经销毁完成。
Vue.component('my-component', {
  destroyed: function () {
    console.log('my-component destroyed')
  }
})

示例说明

<template>
  <div>{{ message }}</div>
</template>

<script>
  export default {
    data() {
      return {
        message: 'Hello World'
      }
    },
    created() {
      console.log('created')
    },
    mounted() {
      console.log('mounted')
    },
    updated() {
      console.log('updated')
    },
    destroyed() {
      console.log('destroyed')
    }
  }
</script>

在该示例中,组件被创建时,created函数被调用,此时组件的属性等信息还未挂载到DOM中。组件挂载到DOM中时,mounted函数被调用。更新后,updated函数被调用。当组件被销毁时,destroyed函数被调用。

<template>
  <div v-show="show">{{ message }}</div>
</template>

<script>
  export default {
    data() {
      return {
        show: true,
        message: 'Hello World'
      }
    },
    beforeUpdate() {
      console.log('beforeUpdate')
    },
    updated() {
      console.log('updated')
    }
  }
</script>

在该示例中,beforeUpdate函数在组件数据改变更新前被调用,此时组件内部修改数据。updated函数在组件数据更新后被调用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈Vue.js 1.x 和 2.x 实例的生命周期 - Python技术站

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

相关文章

  • 解决vue项目 build之后资源文件找不到的问题

    解决vue项目 build之后资源文件找不到的问题 在使用Vue CLI构建的项目中,我们通常会通过npm run build命令将项目打包成生产环境所需的静态资源,这些资源最终都会被打包到dist目录下。但是,在项目实际运行中,有时候可能会出现资源文件找不到的问题,导致页面异常或者空白。本篇攻略将详细讲解这个问题的解决方法。 问题分析 我们先来解析一下这个…

    Vue 2023年5月28日
    00
  • vue $set 实现给数组集合对象赋值

    当使用 Vue.js 开发中,如果想要给数组或对象添加新属性并确保这些属性是可响应的,可以使用 Vue 的 $set 方法来实现。 Vue.$set() 方法接受三个参数:对象,键,值。它所做的主要工作就是创建新属性,并将其设置为可响应的。 下面是使用Vue.$set()方法来给数组添加新元素的示例: <template> <div>…

    Vue 2023年5月28日
    00
  • Vue路由钩子之afterEach beforeEach的区别详解

    Vue路由钩子之afterEach beforeEach的区别详解 在Vue中,路由钩子是非常重要的一部分,他们可以在路由发生变化的时候执行一些动作。Vue提供了两种不同的路由钩子:beforeEach和afterEach。他们两个之间有什么区别呢?下面就详细进行讲解。 beforeEach beforeEach是你可以使用的一种路由钩子。在路由跳转之前,b…

    Vue 2023年5月27日
    00
  • vue实现商城上货组件简易版

    下面我将为你详细讲解“Vue实现商城上货组件简易版”的完整攻略,包含以下几个步骤: 一、设计组件结构 在Vue中设计组件有以下几个要点: 1. 组件的数据 组件必须拥有数据,这些数据可以通过props传递来自父组件的数据,也可以通过data()方法定义组件自身的数据。 2. 组件的模板 Vue使用HTML模板作为组件的呈现形式。 3. 组件的方法 Vue组件…

    Vue 2023年5月28日
    00
  • 详解iOS App中调用AVAudioPlayer播放音频文件的用法

    详解iOS App中调用AVAudioPlayer播放音频文件的用法 在iOS应用中,我们经常需要用到播放音频文件的功能。AVAudioPlayer是iOS中一个非常好用的播放音频文件的类,提供了一系列播放、管理音频、控制播放速率和音量等方法,使得我们能够非常方便的实现音频处理的功能。 1.准备工作 在使用AVAudioPlayer播放音频文件前,需要完成如…

    Vue 2023年5月28日
    00
  • 详解vue中v-on事件监听指令的基本用法

    下面是对“详解vue中v-on事件监听指令的基本用法”的完整攻略。 1. 什么是v-on事件监听指令? 在Vue中,可以使用v-on事件监听指令来绑定DOM事件,可以在事件发生时执行特定的函数。具体来说,v-on指令需要绑定一个事件类型和指定的函数。事件类型可以是所有的DOM事件,例如click、input、change等等。 v-on指令的缩写是@,意味着…

    Vue 2023年5月28日
    00
  • vue修改数据页面无效的解决方案

    当我们在使用Vue进行开发时,经常遇到这样的场景:当我们修改了数据,但是页面上并没有反应。这是由于Vue中的数据响应式机制造成的,需要手动触发重新渲染。那么,针对这种情况,我们该如何解决呢?下面介绍几种常见的解决方案。 1. 使用this.$forceUpdate()方法 this.$forceUpdate()方法可以强制Vue实例强制重新渲染,并重新应用到…

    Vue 2023年5月29日
    00
  • 浅谈使用mpvue开发小程序需要注意和了解的知识点

    浅谈使用mpvue开发小程序需要注意和了解的知识点 什么是mpvue mpvue 是一个使用 Vue.js 开发小程序的神器,它基于 Vue.js 核心,使用了小程序原生 API, 可以使开发者使用 Vue.js 开发小程序,并且代码可以进行复用。由此得益,我们可以在小程序开发中享受到 Vue.js 带来的双向绑定、过滤器、组件化等便捷的开发体验。 注意点 …

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