一文详解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中vant组件样式失效问题及解决

    下面是详细讲解“vue中vant组件样式失效问题及解决”的完整攻略: 问题描述 在使用Vue.js框架的过程中,我们经常会使用第三方UI库来提供快速的样式和组件。近年来,Vant UI库因其丰富、易用性强等特点,成为Vue.js开发中非常受欢迎的组件库之一。但是,在使用Vant UI库时,会遇到一些组件样式失效的问题,如字体颜色不对、背景不正确等,这些问题给…

    Vue 2023年5月28日
    00
  • Vue数组中出现__ob__:Observer无法取值问题的解决方法

    当我们在使用Vue时,有时候会遇到一个问题:当我们打印Vue数据中的数组时,会出现一条类似“ob:Observer”的信息,而我们想要的数据并没有被打印出来,这是为什么呢?这是因为Vue对于数据的观测,会将其转换为响应式数据,并在数据上挂载一个Observer对象,这个__ob__属性就是用来标识Observer对象的。为了解决这个问题,我们需要使用Vue提…

    Vue 2023年5月29日
    00
  • 关于vue项目部署后刷新网页报404错误解决

    针对题目“关于vue项目部署后刷新网页报404错误解决”的问题,我将给出完整攻略,并给出两个示例说明。 问题背景 在vue项目部署后,当在浏览器上进行刷新时,会出现404 Not Found错误,这是因为部署后的静态文件资源没有被正确地映射到服务器的URL路径上。 解决方法 部署vue项目后,需要在服务器端配置URL路径的映射规则,将浏览器请求的URL路径指…

    Vue 2023年5月28日
    00
  • vue 之 css module的使用方法

    我来给你详细讲解一下“vue之CSS Module的使用方法”的完整攻略。 1. 什么是CSS Module CSS Module是CSS的一种模块化方案,与其它CSS的模块化方案如Sass、Less等不同的是,它是由JavaScript模块化方案驱动的,而不是依赖于编译器或预处理器。CSS Module可以帮助我们解决CSS全局污染的问题,让我们的CSS样…

    Vue 2023年5月28日
    00
  • vue中使用localstorage来存储页面信息

    当使用Vue构建单页应用程序时,使用localStorage来存储页面信息是一种常见的做法。localStorage是一个API,可以将数据永久存储在浏览器中,即使用户关闭了浏览器,数据也不会丢失。以下是Vue中使用localStorage来存储页面信息的完整攻略,包含两条示例说明。 使用localStorage存储数据 要在Vue中使用localStora…

    Vue 2023年5月28日
    00
  • Vue项目打包部署全过程(history模式)

    下面是Vue项目打包部署全过程(history模式)的完整攻略。 1. 打包项目 使用Vue CLI的build命令来打包项目,在项目根目录下的终端输入以下命令: npm run build 这将把项目打包到dist目录中。打包完后,dist目录下会生成一个index.html文件和一些资源文件。 2. 配置服务器 使用Express框架来搭建服务器,先安装…

    Vue 2023年5月28日
    00
  • 基于node+vue实现简单的WebSocket聊天功能

    下面我来详细讲解“基于node+vue实现简单的WebSocket聊天功能”的完整攻略。 前置知识 在开始之前,需要了解一些基础知识: WebSocket:是一种基于 TCP 协议的新型网络协议,可以实现双向通信。 Node.js:一个基于Chrome V8引擎的JavaScript运行环境。 Vue.js:一个构建用户界面的渐进式框架。 npm:Node.…

    Vue 2023年5月28日
    00
  • VUE3+mqtt封装解决多页面使用需重复连接等问题(附实例)

    一、介绍 本篇攻略主要讲解如何使用Vue 3和MQTT封装解决多页面需要重复连接的问题。 基于MQTT协议的Web应用程序可以实现快速响应和低延迟的实时数据更新,并且可以处理大规模的并发连接。本文将提供一个示例代码,打破传统多页面应用程序多次连接MQTT服务器的限制。 二、MQTT介绍 MQTT是一种基于发布(publish)/订阅(subscribe)模式…

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