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

yizhihongxing

浅谈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使用节流函数的踩坑实例指南

    下面我来给出详细讲解vue使用节流函数的踩坑实例指南。 什么是函数节流? 函数节流是控制函数被调用的频率,让函数只在指定的时间间隔内执行一次,前提是该函数在该时间间隔内多次调用,节省计算资源。常用于优化浏览器滚动、窗口大小变化等事件的监听回调函数。 为什么要使用节流函数? 在处理一些用户频繁触发的事件时(例如滚动、拖动),如果不使用函数节流来限制操作的频率,…

    Vue 2023年5月28日
    00
  • uniapp微信小程序无法获取Vue.prototype值的解决方法

    问题描述: 在使用uniapp框架开发微信小程序时,有时候会遇到Vue.prototype里放的值无法在小程序里获取的问题,这是因为uniapp的小程序使用的是微信原生小程序的组件库,因此Vue.prototype的值无法直接引入到小程序里。但是我们可以通过一些方法绕过这个问题。 解决方法: 在uniapp中引入wx对象,使用wx.$vm来代替Vue.pro…

    Vue 2023年5月27日
    00
  • vue双向数据绑定知识点总结

    Vue双向数据绑定知识点总结 什么是双向数据绑定 双向数据绑定是指当数据模型(Model)发生变化时,会自动将变化的数据反映到视图(View)中,同时当用户操作视图时,数据模型也会相应地发生改变。这种自动的双向同步,可以减少开发者手动维护数据和视图之间的关系,提升代码的开发效率。 Vue的双向数据绑定 Vue框架实现了双向数据绑定的机制,通过Vue的数据绑定…

    Vue 2023年5月28日
    00
  • 分享Vue组件传值的几种常用方式(一)

    下面我会详细讲解“分享Vue组件传值的几种常用方式(一)”的完整攻略。 标题分析 标题:“分享Vue组件传值的几种常用方式(一)” 分析:该标题属于文档类文章,主要内容是针对Vue组件传值方面的一些常用方式进行介绍。 文章结构 引言:介绍Vue组件传值的重要性和文章将要介绍的内容。 父组件向子组件传值的方式: props属性 和 \$emit方法 对prop…

    Vue 2023年5月27日
    00
  • 探究Vue.js 2.0新增的虚拟DOM

    探究Vue.js 2.0新增的虚拟DOM 在Vue.js 2.0中,引入了虚拟DOM,它是在DOM上的一个抽象层。使用虚拟DOM有以下几个优点: 性能优化。虚拟DOM可以避免不必要的DOM操作,减少了重绘和回流次数,提升了渲染效率。 跨平台开发。虚拟DOM可以在不同平台上实现原生DOM上没有的特性,例如React Native中的Flexbox布局。 更好的…

    Vue 2023年5月28日
    00
  • vue3 hook重构DataV的全屏容器组件详解

    针对“vue3 hook重构DataV的全屏容器组件详解”这篇文章,我可以提供以下详细的攻略: 一、背景 这篇文章主要介绍了如何使用 Vue3 的 hook 函数来重构 DataV 的全屏容器组件,以提升代码的可读性和维护性。文章以具体的代码实现为例,从技术层面深入讲解了 hook 函数的运用和优势,包括重构前后的组件结构、组件内部使用的 hook 函数等。…

    Vue 2023年5月28日
    00
  • Vue.js教程之计算属性

    让我来为你详细讲解一下“Vue.js教程之计算属性”的完整攻略。 什么是计算属性? 在 Vue.js 中,计算属性(Computed)是一种在模板中使用的属性,通过计算属性我们可以实现一些动态的内容展示或逻辑处理,并且相较于使用方法或侦听器等方式,计算属性的实现更为简便、高效。 我们可以在 Vue 实例中使用 computed 属性来定义计算属性,该属性是一…

    Vue 2023年5月27日
    00
  • uniapp小程序实现瀑布流布局的思路与代码

    接下来我将分享”uniapp小程序实现瀑布流布局的思路与代码”的完整攻略。 概述 瀑布流布局是一种经典的UI设计风格,它可以让页面更加美观且易于阅读。在uni-app小程序中实现瀑布流布局并不难,我们可以利用uni-app对flex布局的支持来完成。本文将介绍如何使用flex布局实现瀑布流布局。 实现方法 创建一个包含多个子元素的容器,每个子元素中包含一张图…

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