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函数@click.prevent的使用解析

    当我们使用Vue.js开发前端应用时,经常会在模版中使用@click指令来响应用户的点击事件,在一般情况下,点击事件会导致页面的跳转或刷新等行为,但是有时候我们需要控制点击事件的默认行为,这时候就需要使用@click.prevent修饰符。 @click.prevent能够阻止点击事件的默认行为,例如在表单的提交按钮中使用@click.prevent可以阻止…

    Vue 2023年5月28日
    00
  • 如何利用vue.js实现拖放功能

    要利用Vue.js实现拖放功能,需遵循以下步骤: 步骤一:添加Vue.js和拖放依赖包 在实现Vue.js拖放功能之前,需要添加Vue.js和相关的拖放依赖包。可以通过使用npm或直接链接到CDN来引入这些依赖。 <script src="https://cdn.jsdelivr.net/npm/vue"></scrip…

    Vue 2023年5月28日
    00
  • Vue中使用Lodash的实现示例

    下面是详细讲解“Vue中使用Lodash的实现示例”的完整攻略。 Vue中使用Lodash的实现示例 什么是Lodash Lodash 是一个现代 JavaScript 实用工具库,提供了许多常见的操作方法和函数。 在 Vue 中使用 Lodash 安装 Lodash 使用npm安装Lodash npm install –save lodash 或者是ya…

    Vue 2023年5月28日
    00
  • React中的权限组件设计问题小结

    我将详细讲解“React中的权限组件设计问题小结”的完整攻略。首先,我们需要明确权限组件的概念和作用,权限组件用于控制用户在系统中的访问权限,保障系统的安全性和稳定性。在React中,我们可以使用高阶组件(HOC)来实现权限控制。 一、HOC高阶组件思路 1.定义一个高阶组件 我们首先需要定义一个高阶组件,用于封装特定的组件并添加权限控制逻辑。以下是一个基本…

    Vue 2023年5月28日
    00
  • vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)

    下面是实现分环境打包的步骤: 步骤一:配置不同环境的参数 在Vue项目中,我们可以通过创建不同的环境变量文件来配置不同环境中的参数。比如我们可以通过创建.env.development、.env.production、.env.test等文件分别配置开发环境、生产环境和测试环境的参数。其中以VUE_APP_前缀的变量可以在项目中通过process.env对象…

    Vue 2023年5月28日
    00
  • Springboot实现Java阿里短信发送代码实例

    Springboot实现Java阿里短信发送代码实例 简介 阿里云短信服务提供了短信发送、查询等功能,便于企业进行验证码、营销等短信业务。本文将以Springboot为基础,讲解如何使用Java SDK来实现阿里短信服务。 准备工作 在使用阿里短信服务之前,需要先进行以下准备工作: 在阿里云控制台中开通短信服务并获取Access Key ID和Access …

    Vue 2023年5月28日
    00
  • Vue处理循环数据流程示例精讲

    Vue 处理循环数据的流程包含了三个主要的步骤:1. 遍历数据;2. 缓存节点;3. 渲染虚拟 DOM。 1. 遍历数据 Vue 在处理循环数据时,首先需要遍历数据。遍历的方式根据不同的类型而不同。如果是数组类型,Vue 使用一个 for 循环进行遍历,如果是对象类型,Vue 使用一个 Object.keys() 方法进行遍历。 下面的代码示例演示了如何使用…

    Vue 2023年5月27日
    00
  • 手写Vue弹窗Modal的实现代码

    我很乐意为你详细讲解手写Vue弹窗Modal的实现。下面是完整攻略: 步骤1:创建组件 首先,我们需要创建一个Vue组件,用于渲染Modal组件的HTML、CSS和JavaScript代码。 <template> <div class="modal" :class="{ active: isActive }&q…

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