Vue生命周期与setup深入详解

Vue生命周期与setup深入详解

在Vue中,每个组件都有自己的生命周期,其中包含了一些特定的事件和钩子函数,不同的钩子函数分别在组件的不同生命周期阶段触发,开发者可以针对不同的阶段进行函数的逻辑编写。在Vue3.x中,添加了新的组件选项setup,它也包含生命周期的概念,本文主要讲解Vue生命周期以及setup在Vue3.x中的应用和相关注意事项。

Vue生命周期

  1. 创建阶段(Initialization)

    在这个阶段内,Vue会进行部分初始化的工作,从而准备好组件渲染所需的内容。

    钩子函数:

    • beforeCreate: 在实例初始化之后,数据观测(data observer)和事件/watcher事件配置之前被调用。
    • created: 在实例创建完成之后被立即调用。在此阶段中,实例已完成:数据观测(data observer)、属性和方法的运算、watch/event事件回调。该钩子函数无法负责某些延迟需要的操作。因为此时并未渲染DOM,所以无法访问 $el 对象。
  2. 模板编译阶段(Template Compilation)

    在这个阶段,Vue会进行模板编译,将模板转化成渲染函数。

    钩子函数:

    • beforeMount: 在挂载开始之前被调用,此时组件内DOM节点并未创建。
    • render:此阶段会渲染DOM,无钩子函数。
  3. 挂载阶段(Mounting)

    在这个阶段,Vue会将组件挂载到DOM中。

    钩子函数:

    • mounted: 在挂载完成后被调用,此时组件的DOM节点已经生成,对于需要进行一些DOM操作的逻辑,在该钩子函数中进行操作即可。
  4. 更新阶段(Updating)

    当数据更新时,Vue将会重新渲染组件。

    钩子函数:

    • beforeUpdate: 在数据更新之前被调用,可以在该函数中进行已有数据的修改,从而影响到渲染时的DOM。
    • updated: 在数据更新完成后被调用,此时DOM也已经更新完成。
  5. 卸载阶段(UnMounting)

    当组件被销毁时,Vue将会进入卸载阶段。

    钩子函数:

    • beforeUnmount: 在卸载开始之前被调用,此时DOM节点尚未被移除。
    • unmounted: 在卸载完成后被调用,此时DOM节点已经被移除。

setup

在Vue3.x中,新增了组件选项setup()函数。setup()函数会在组件被创建、props传递完毕,且在beforeCreate钩子函数之前调用。它接收两个参数:props(组件的props属性对象)和context(组件相关的属性和方法)。setup()函数必须返回一个对象,该对象中包含了组件中要使用到的响应式数据和方法。

示例1:setup函数的简单使用

<script>
  import { ref } from 'vue'

  export default {
    props: {
      title: String
    },
    setup(props) {
      const count = ref(0)
      const increaseCount = () => {
        count.value++
      }

      return {
        count,
        increaseCount
      }
    }
  }
</script>

在该示例中,我们定义了一个计数器变量count和一个增加计数器的函数increaseCount,并通过setup()函数将它们暴露出来。在组件模板中,在script标签内部拉取 count,以 {{}} 的方式进行绑定。ref作用是在声明变量时绑定引用关系,让变量成为响应式数据,setup()函数中的变量同样也是响应式的。

示例2:组件中的生命周期如何使用

<script>
  import { onMounted, onUnmounted } from 'vue'

  export default {
    setup(props) {
      onMounted(() => {
        console.log('mounted')
      })

      onUnmounted(() => {
        console.log('unmounted')
      })
    }
  }
</script>

在该示例中,我们使用了onMounted()onUnmounted()函数,这两个函数在组件中属于setup()阶段。当组件被挂载到页面上时,onMounted()函数会被调用,控制台输出“mounted”;当组件被卸载时,onUnmounted()函数会被调用,控制台输出“unmounted”。

总结

setup()函数是Vue3.x中新增的重要概念,它是响应式数据和生命周期的入口,并紧密关联Vue的全局API和组合式API。了解和熟练使用Vue组件的生命周期,以及setup()函数的使用方式和注意事项,可以更好地编写Vue应用程序,并优化程序的性能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue生命周期与setup深入详解 - Python技术站

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

相关文章

  • 简单了解vue.js数组的常用操作

    下面是“简单了解vue.js数组的常用操作”的完整攻略: 常用数组操作 数组是Vue.js中很重要的数据类型,Vue.js提供了很多常用的数组操作方法: push push方法可以向数组的末尾添加一个或多个元素。它的语法如下: arr.push(element1, …, elementN) 其中,arr是要操作的数组,element1到elementN是…

    Vue 2023年5月27日
    00
  • vue组件文档生成备注详解

    Vue组件文档生成是一种非常重要的工具,它能够帮助我们在编写Vue组件的时候方便地生成文档以及API文档,使得我们开发更加快速、准确。本文将从以下几个方面进行详细讲解: 为什么需要使用Vue组件文档生成 在进行Vue组件开发时,我们需要编写大量的文档和API文档,这样才能帮助其他人使用我们的组件。但是手动编写这些文档非常费时费力,而且容易出错,因此我们需要一…

    Vue 2023年5月27日
    00
  • Vue3 <script setup lang=“ts“> 的基本使用

    Vue3提供了一种名为 <script setup> 的语法糖,它可以让我们更加便捷地编写Vue组件。在加上 lang=”ts” 后可以通过TypeScript来书写Vue3组件,提高代码的可读性和类型安全性。 首先,让我们创建一个Vue3组件,该组件可以在页面上显示一个计数器,并且能够点击按钮对其进行累加操作。 <template>…

    Vue 2023年5月27日
    00
  • 解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题

    解决vue-quill-editor上传内容中图片base64字符串过长的问题,有以下几种方式: 1. 使用quill-image-extend-module quill-image-extend-module是一个扩展模块,它可以让quill-editor支持图片上传。它会将上传的图片文件转换成base64格式,然后插入到编辑器内容中,这会导致编辑器内容变…

    Vue 2023年5月27日
    00
  • webpack构建vue项目的详细教程(配置篇)

    下面是“webpack构建vue项目的详细教程(配置篇)”的完整攻略: 1. 安装webpack和相关插件 在开始配置webpack之前,需要先安装一些必要的包。可以使用npm进行安装: npm install webpack webpack-cli webpack-dev-server –save-dev 安装webpack、webpack-cli和we…

    Vue 2023年5月27日
    00
  • 详解Vue3中ref和reactive函数的使用

    那么首先我们需要了解Vue3中ref和reactive函数的基本用法。 什么是ref和reactive函数 在Vue3中,数据响应式的核心原理是基于ES6提供的新特性Proxy进行实现的。ref和reactive有以下作用: ref函数:用于创建一个响应式的基本数据类型变量。 reactive函数:用于创建一个响应式的对象数据类型变量。 ref函数的基本用法…

    Vue 2023年5月28日
    00
  • Vue3关于响应式数据类型详解(ref、reactive、toRef、及toRefs)

    Vue 3是Vue.js框架的最新版本,Vue 3对Vue.js响应式系统进行了重构,引入了一些新特性。在Vue 3中,我们可以使用以下概念来定义响应式数据类型:ref、reactive、toRef、toRefs。 ref ref是Vue 3中的一个响应式数据类型,它可以将一个基本类型的值(如字符串、数字、布尔值)封装成一个响应式对象,从而使这个基本类型的值…

    Vue 2023年5月28日
    00
  • vue框架通用化解决个性化文字换行问题实例详解

    对于“vue框架通用化解决个性化文字换行问题实例详解”的攻略,我将按照以下标题进行讲解。 解决方案背景和问题描述 在使用Vue框架开发应用时,我们经常会遇到一些个性化问题,例如文字长度不一致引起的换行问题。在这种情况下,我们需要一种通用的解决方案,能够在不同场景下灵活地适应不同的需要。因此,本文将介绍一种如何解决Vue框架下个性化文字换行问题的通用方案。 具…

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