一文详解Vue选项式 API 的生命周期选项和组合式API

yizhihongxing

一文详解Vue选项式 API 的生命周期选项和组合式API

前言

Vue 3.0 正式版发布后,options API 和 composition API 成为开发者最热门的讨论话题。Options API 是 Vue 2.x 默认使用的 API,而在 Vue 3.0 中引入了 Composition API,可谓是 Vue 3.0 的一大亮点。两种 API 的生命周期选项有何不同呢?

本文将详细介绍 Vue 选项式 API 的生命周期选项和组合式 API,并提供两个示例来说明。

Vue 选项式 API 的生命周期选项

生命周期函数作为一组函数,为 Vue 实例的创建、更新、销毁等环节提供了触发点,可以在函数内部进行必要的逻辑处理。Vue 选项式 API 常用的生命周期选项有以下几种:

  1. beforeCreate:实例创建之前调用,此时 data、methods 等实例属性和方法都还未初始化;
  2. created:实例创建后立即调用,此时 data、methods 等实例属性和方法都已经初始化;
  3. beforeMount:在挂载开始之前被调用,即在 render 方法之前被调用,该函数最后一次修改组件最后一次更改 Dom 的机会,可以进行一次有关组件的操作;
  4. mounted:挂载到实例上后调用,渲染模版, 并将实例挂载到 DOM 上后调用,该函数适合进行一些业务或界面进来的初始化操作;
  5. beforeUpdate:在组件更新之前调用,数据已经存在,但并未还没有渲染到视图上去,可以在该钩子函数中进行准备工作,例如获取新数据。但不要修改现有的数据或视图,因为递归更新导致的无限循环会使浏览器崩溃;
  6. updated:在组件更新之后调用,此时组件已经使用新数据渲染完成,所以该函数可以用来操作更新后的 DOM;
  7. beforeUnmount:在实例销毁之前调用,此时实例仍然可以被响应,因此可以在这里执行清理操作;
  8. unmounted:实例被销毁后调用。此时实例所有内容以及监听的事件被清除。

Vue 组合式 API

Vue 组合式 API 将无法抵御的组件逻辑进行更细粒度的拆分,可使代码更易维护、易重用。组合式 API 的核心是 setup 函数,该函数在组件实例制作时调用一次。setup 函数负责接受 props 和 context 并返回一些列可供 Vue 实例直接使用的响应对象。

下面是一个示例:

import { onMounted, onUnmounted, reactive } from 'vue'

export default {
  setup(props) {
    const state = reactive({
      count: 0
    })
    const increment = () => {
      state.count++
    }

    onMounted(() => {
      console.log('Mounted')
    })

    onUnmounted(() => {
      console.log('Unmounted')
    })

    return {
      state,
      increment
    }
  }
}

上述代码中,onMountedonUnmounted 同 Options API 的 mounteddestroyed 职责相同,分别在组件挂载和销毁时进行一些需要的逻辑操作。

使用组合式 API 优势:

  1. 更好的解耦,拆分组件功能,有利于代码的组织和维护;
  2. 改善代码的复用性,组合功能可以独立于 UI 组件而存在;
  3. 使逻辑聚焦于组件状态的控制上。

下面再来一个示例:

import { onMounted, onBeforeUnmount } from 'vue'

export default {
  setup(props, context) {
    onMounted(() => {
      console.log('挂载成功')
    })

    onBeforeUnmount(() => {
      console.log('组件即将卸载')
    })

    const handleClick = () => {
      console.log('click')
    }

    return {
      handleClick
    }
  }
}

上述示例中,组件依然包含了 onMountedonBeforeUnmount 生命周期。这两个函数不仅可以在挂载组件 / 卸载组件的监听回调函数中执行特定的逻辑,还可供整个组件的状态和行为进行引用,例如上代码中的 handleClick 函数。

结语

本文通过详细讲解了 Vue 选项式 API 的生命周期选项和组合式 API 的特性以及示例,可使开发者在 Vue 应用快速迭代的过程中高效快捷地开发出代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文详解Vue选项式 API 的生命周期选项和组合式API - Python技术站

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

相关文章

  • vue 项目build错误异常的解决方法

    下面是详细讲解“vue 项目 build 错误异常的解决方法”的完整攻略: 问题描述 在进行 vue 项目的 build 过程中,有可能会出现各种各样的错误异常,这些错误和异常可能会导致 build 失败,使得我们无法成功将项目打包并发布。这时候我们需要对这些错误进行分析和解决,以确保项目能够正常 build。 解决方法 针对 vue 项目 build 过程…

    Vue 2023年5月28日
    00
  • vue-i18n的9以上版本中@被用作特殊字符处理,直接用会报错问题

    在vue-i18n的9以上版本中,@符号被用作特殊字符处理。如果在国际化文件中直接使用@符号,会导致解析错误并报错。因此,需要进行转义处理,才能正常使用。 处理方法如下: 1.将@符号转义为其HTML实体编码,即”@”。 将”@”转义为”@”可以避免在vue-i18n中使用@符号时报错。例如,以下是一个包含@符号的英文字符串: { &quot…

    Vue 2023年5月27日
    00
  • Vue 动态路由的实现详情

    下面就为大家详细讲解一下「Vue 动态路由的实现详情」。 什么是动态路由? Vue 路由是一种 URL 和组件之间的映射关系,并通过 URL 触发组件的展示。而动态路由则是在 URL 中传递参数,根据参数的不同动态匹配相应的路由。例如 /article/1 和 /article/2 都可以匹配到文章详情页路由,只不过参数不同。在 Vue 中,我们可以通过“路…

    Vue 2023年5月28日
    00
  • 从0搭建Vue3组件库如何使用 glup 打包组件库并实现按需加载

    下面是从0搭建Vue3组件库并使用glup打包组件库实现按需加载的完整攻略。 步骤一:搭建组件库的开发环境 1.1 环境依赖 首先,我们需要安装Node.js和npm。在安装完成之后,可以在命令行中输入以下命令进行确认: node -v # 查看当前Node.js版本 npm -v # 查看当前npm版本 1.2 创建Vue3组件库 Vue3框架已经正式发布…

    Vue 2023年5月28日
    00
  • Vue中引入样式文件的方法

    当我们使用Vue框架来构建前端应用时,经常需要引入样式文件来美化页面样式。在Vue中引入样式文件的方法有以下几种: 引入全局样式文件 我们可以将全局样式文件引入到Vue项目的入口文件(比如main.js文件)中。这样可以让这些样式在所有Vue组件中都可用。 // main.js文件 import Vue from "vue"; impor…

    Vue 2023年5月28日
    00
  • Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)

    Vue使用富文本编辑器Vue-Quill-Editor的攻略如下: 1. 安装Vue-Quill-Editor 我们需要通过npm进行安装: npm install vue-quill-editor –save 安装完成后我们直接使用即可。 2. 在Vue项目中使用Vue-Quill-Editor 在项目的main.js文件中引入Vue-Quill-Edi…

    Vue 2023年5月28日
    00
  • Vue局部组件数据共享Vue.observable()的使用

    Vue 是一个非常好用的 JavaScript 前端框架,而组件数据共享是 Vue 中非常常见的需求。Vue.observable() 可以用于将任意一个普通对象转化成响应式的对象,从而实现对该对象的数据共享和观测。下面提供关于Vue局部组件数据共享Vue.observable()的使用的攻略。 目录 Vue.observable() 简介 在 Vue 组件…

    Vue 2023年5月28日
    00
  • 解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)

    在使用Vue开发过程中,有时候我们会遇到数据更改了,但是界面并没有实时更新的问题。这是因为Vue使用了异步更新的机制,当数据发生更改时,界面并不会立即更新,而是等到下一轮微任务执行更新。因此,我们需要采取一些措施来解决这个问题。 解决Vue数据不实时更新的问题 1. 使用Vue.$set方法 在Vue中,我们通常使用Object.defineProperty…

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