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

一文详解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 router返回到指定的路由的场景分析

    下面是关于“Vue Router返回到指定的路由的场景分析”的完整攻略。 1. 场景描述 在使用Vue Router构建单页应用程序时,我们可能会遇到需要在路由之间来回切换的情况。有时,我们需要从一个页面返回到上一级页面,而又不想回到整个路由的初始状态,而是要返回到之前指定的某个路由,这时就需要用到Vue Router返回到指定路由的功能了。 2. 方案分析…

    Vue 2023年5月28日
    00
  • vue实现商城秒杀倒计时功能

    实现商城秒杀倒计时功能,可以分为以下四个步骤: 获取当前时间和秒杀结束时间 获取倒计时需要显示的时间数据,包括小时、分钟、秒数 将时间数据渲染到页面上 实现倒计时的定时器,并更新倒计时时间 下面将对每个步骤进行详细的讲解。 1. 获取当前时间和秒杀结束时间 获取当前时间可以使用 Date.now() 方法,该方法返回当前时间的时间戳。秒杀结束时间可以通过后端…

    Vue 2023年5月29日
    00
  • vue2.x中h函数(createElement)与vue3中的h函数详解

    下面详细讲解“vue2.x中h函数(createElement)与vue3中的h函数详解”的完整攻略。 什么是h函数 在Vue中,h函数意味着创建虚拟DOM节点。 在Vue 2版本中,这个函数叫‘createElement’,但是在Vue 3引入了更新后的h函数,它有更好的类型推断和更简洁的API。 Vue 2.x 中h函数(createElement)的使…

    Vue 2023年5月28日
    00
  • Vue.js中让人容易忽略的API详解

    Vue.js中让人容易忽略的API详解可以涉及很多方面,我就从以下几个方面进行详细讲解。 一、computed computed是Vue.js中的一个属性,它主要用来设置计算属性。和methods相比,computed具有缓存的作用,只有当该属性的依赖发生变化时才会重新计算值。computed属性的值是根据它所依赖的其他属性变化而变化的,这样就能很方便地实现…

    Vue 2023年5月28日
    00
  • Vue中v-on的基础用法、参数传递和修饰符的示例详解

    下面我会详细讲解“Vue中v-on的基础用法、参数传递和修饰符的示例详解”。 1. v-on的基础用法 v-on是Vue的事件绑定指令,它可以监听指定的DOM事件,并在事件触发时执行指定的Vue方法。v-on的基础用法格式为:v-on:事件名=”方法名”,其中事件名可以是任意合法的DOM事件名,方法名则是Vue实例的一个方法名。示例代码: <butto…

    Vue 2023年5月28日
    00
  • Vue动态样式绑定实例详解

    下面我来详细讲解一下“Vue动态样式绑定实例详解”的完整攻略。 什么是Vue动态样式绑定 Vue动态样式绑定可以让我们根据Vue实例的数据来动态绑定一个或多个样式。这样,在数据改变时,与之相关联的样式也会随之改变,从而实现一个动态的页面。 如何使用Vue动态样式绑定 Vue动态样式绑定可以使用v-bind:style或:style指令来绑定一个或多个样式。它…

    Vue 2023年5月27日
    00
  • vue学习教程之带你一步步详细解析vue-cli

    Vue学习教程之带你一步步详细解析vue-cli 前言 Vue.js是一个轻量级的JavaScript框架,它与React和Angular一起组成了前端三大框架。Vue.js由开发者Evan You创建,它的双向数据绑定和组件化思想极大地提高了前端开发的效率。 随着Vue.js的发展,它的生态系统也日益完善。vue-cli是Vue.js的脚手架工具,它可以帮…

    Vue 2023年5月27日
    00
  • 11行JS代码制作二维码生成功能

    当我们想要在网页上制作二维码时,可以使用JavaScript编写11行代码来实现,下面是详细步骤: 1. 引入Qrcode.js库 我们需要使用Qrcode.js库来生成二维码,因此首先需要将该库引入网页中。 <script src="https://cdn.bootcdn.net/ajax/libs/qrcodejs/1.0.0/qrcod…

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