vue生命周期的传统写法和setup语法糖写法

news2024/9/25 19:18:06

在这里插入图片描述
🙂博主:小猫娃来啦
🙂文章核心:vue生命周期的传统写法和setup语法糖写法

文章目录

  • setup语法糖设计目的
  • vue3钩子函数
  • beforeCreated和created被封装
  • 传统写法和语法糖写法的对比

setup语法糖设计目的

<script setup> 语法糖的设计目标是简化组件编写,将逻辑和生命周期函数整合到一个地方。它使用了基于编译时静态分析的方式,通过识别函数调用来确定逻辑的执行时机。

vue3钩子函数

常见的就8个:

beforeCreate: 组件实例被创建之前调用,此时组件的 data 和 methods 等属性都还未初始化。
created: 组件实例已经创建完成后调用,可以访问组件的 data 和 methods 属性。
beforeMount: 组件挂载前调用,此时模板编译已完成,但尚未将其挂载到页面上。
mounted: 组件挂载后调用,此时组件已在页面上渲染出来。
beforeUpdate: 数据更新前调用,可用于在数据更新之前获取更新前的状态。
updated: 数据更新后调用,可用于操作 DOM 或执行其他的更新操作。
beforeUnmount: 组件销毁前调用,可以在这里进行一些清理操作,比如清除定时器等。
unmounted: 组件销毁后调用,此时组件已完全被销毁,所有的事件监听和子组件都已被移除。
.
在 Vue 3 中,由于引入了 Composition API,一些生命周期钩子函数的名称发生了改变,并且在使用 <script setup> 语法糖时,不再直接使用这些钩子函数,而是使用Composition API 提供的函数来实现类似的功能。

以下是 Vue 3 中常用的生命周期钩子函数及其对应的 Composition API 函数:

beforeCreate: 在 Vue 3 中,可以使用 setup 函数中的代码来替代 beforeCreate 钩子函数。

created: 在 Vue 3 中,可以使用 setup 函数中的代码来替代 created 钩子函数。

beforeMount: 在 Vue 3 中,可以使用 onBeforeMount 函数来替代 beforeMount 钩子函数。

mounted: 在 Vue 3 中,可以使用 onMounted 函数来替代 mounted 钩子函数。

beforeUpdate: 在 Vue 3 中,可以使用 onBeforeUpdate 函数来替代 beforeUpdate 钩子函数。

updated: 在 Vue 3 中,可以使用 onUpdated 函数来替代 updated 钩子函数。

beforeUnmount: 在 Vue 3 中,可以使用 onBeforeUnmount 函数来替代 beforeUnmount
钩子函数。

unmounted: 在 Vue 3 中,可以使用 onUnmounted 函数来替代 unmounted 钩子函数。


beforeCreated和created被封装

beforeCreatecreated 这两个钩子函数在 Vue 3 中被封装进了 <script setup> 语法糖中。原因是为了简化代码和提高可读性。

在 Vue 2 中,我们需要显式地编写 beforeCreatecreated 钩子函数来处理相关的逻辑。这两个钩子函数分别在组件实例被创建之前和创建之后执行。

而在 Vue 3 中,通过使用 <script setup> 语法糖,不再需要显式地定义这两个钩子函数。相反,我们可以在 setup 函数中设置数据、方法和其他逻辑,这些逻辑会在组件创建之前和创建之后自动执行。

使用


传统写法和语法糖写法的对比

  • beforeCreate 和 created
    传统写法:
<script>
export default {
  beforeCreate() {
    console.log('beforeCreate');
  },
  created() {
    console.log('created');
  }
};
</script>

<script setup> 语法糖合并了这两个hook

<script setup>


</script>

  • beforeMount 和 mounted
    传统写法:
<script>
export default {
  beforeMount() {
    console.log('beforeMount');
  },
  mounted() {
    console.log('mounted');
  }
};
</script>

使用 <script setup> 和 Composition API 函数:

<script setup>
import { onBeforeMount, onMounted } from 'vue';

onBeforeMount(() => {
  console.log('beforeMount');
});

onMounted(() => {
  console.log('mounted');
});
</script>

  • beforeUpdate 和 updated
    传统写法:
<script>
export default {
  beforeUpdate() {
    console.log('beforeUpdate');
  },
  updated() {
    console.log('updated');
  }
};
</script>

使用 <script setup> 和 Composition API 函数:

<script setup>
import { onBeforeUpdate, onUpdated } from 'vue';

onBeforeUpdate(() => {
  console.log('beforeUpdate');
});

onUpdated(() => {
  console.log('updated');
});
</script>

  • beforeUnmount 和 unmounted
    传统写法:
<script>
export default {
  beforeUnmount() {
    console.log('beforeUnmount');
  },
  unmounted() {
    console.log('unmounted');
  }
};
</script>

使用 <script setup> 和 Composition API 函数:

<script setup>
import { onBeforeUnmount, onUnmounted } from 'vue';

onBeforeUnmount(() => {
  console.log('beforeUnmount');
});

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

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/797901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux6.17 Docker 安全及日志管理

文章目录 计算机系统5G云计算第四章 LINUX Docker 安全及日志管理一、Docker 容器与虚拟机的区别1.隔离与共享2.性能与损耗 二、Docker 存在的安全问题1.Docker 自身漏洞2.Docker 源码问题 三、Docker 架构缺陷与安全机制1.容器之间的局域网攻击2.DDoS 攻击耗尽资源3.有漏洞的系…

大模型部署框架 FastLLM 实现细节解析

0x0. 前言 接着 大模型部署框架 FastLLM 简要解析 这篇文章首先梳理了一下FastLLM的调用链和关键的数据结构&#xff0c;然后解析了 FastLLM 的一些实现细节和CPU/GPU后端实现采用的优化技巧。 0x1. 调用链和数据结构解析 以chatglm-6b的支持为例&#xff0c;函数入口在 htt…

数据库索引优化与查询优化——醍醐灌顶

索引优化与查询优化 哪些维度可以进行数据库调优 索引失效、没有充分利用到索引-一索引建立关联查询太多JOIN (设计缺陷或不得已的需求) --SQL优化服务器调优及各个参数设置 (缓冲、线程数等)–调整my.cnf数据过多–分库分表 关于数据库调优的知识点非常分散。不同的 DBMS&a…

TypeError: run() got an unexpected keyword argument ‘hide_label‘ yolov5最新版本报错

报错展示 解决方法 把detect.py中的如上部分的 --hide-label改为 --hide-labels&#xff0c;成功解决.

EtherNet IP转PROFINET网关连接西门子与欧姆龙方法

本文主要介绍了捷米特JM-PN-EIP&#xff08;EtherNet/IP转PROFINET&#xff09;网关西门子200智能PLC&#xff08;PROFINET&#xff09;和欧姆龙系统EtherNet/IP通信的配置过程。 1, 将 EDS 文件复制到欧姆龙软件的对应文件夹下 2, 首先添加捷米特JM-PN-EIP网关的全局变量&…

Matlab出现load(‘data/2Dletters/C.mat‘)错误,即加载数据错误

在运行matlab程序时&#xff0c;如果出现加载数据错误&#xff0c;则是因为没有定位到相应文件夹。 解决办法如下&#xff1a; 通过红色框左边的选项&#xff08;浏览文件夹&#xff09;定位到我们所运行.m程序所在的文件夹即可

数据库监控工具-PIGOSS BSM

PIGOSS BSM 运维监控系统的重要功能之一是数据库监控&#xff0c;它能够帮助数据库管理员(DBA)和系统管理员监控包含Oracle、SQL Server、MySQL、DB2、PostgreSql、MongoDB、达梦、南大通用、人大金仓、神州通用等多种类异构型的数据库环境。PIGOSS BSM通过执行数据库查询来采集…

C#如何使用SQLite数据库?

文章目录 0.引言1.SQLite工具准备2.创建窗体项目并添加SQLite的命名空间3.编写使用SQLite代码4.结果展示 0.引言 SQLite是一个轻量级的嵌入式数据库&#xff0c;它的库文件非常小巧&#xff0c;不需要独立的服务器进程或配置。这使得它非常适合在资源受限的环境中使用&#xff…

飞凌嵌入式荣获「河北省企业技术中心」认定

近期&#xff0c;河北省发展和改革委员会发布了2023年河北省企业技术中心认定公示&#xff0c; 保定飞凌嵌入式技术有限公司成功通过省级企业技术中心认定。 省级企业技术中心在企业创新体系和创新能力的建设中发挥引导与示范作用&#xff0c;此次荣誉的获得是对飞凌嵌入式推进…

理解跨平台技术

1、为什么需要跨平台技术 write once&#xff0c;run everywhere 开发一个APP运行在Android手机需要一套代码&#xff0c;运行在ios操作系统的手机又需要一套代码&#xff0c;为了使同一套代码能运行在不同的操作系统上&#xff0c;解决多端独立开发的问题&#xff0c;跨平台…

接口测试之requests中的会话

requests中的会话 之前的例子中&#xff0c;我们都是单独调用接口或解析响应&#xff0c; 但在实际应用场景中&#xff0c;我们往往会需要连续调用一些接口。 比如&#xff1a; 1.先登录 2.再做一些操作 3.最后登出 就像我们在浏览器中对网页做操作一样&#xff0c;reques…

Spark编程-SparkSQL

SparkSql能做些啥 Spark SQL的核心概念是DataFrame&#xff0c;它是一个分布式的数据集合&#xff0c;类似于关系数据库中的表。支持使用SQL语言直接对DataFrame进行查询,提供了丰富的内置函数和表达式&#xff0c;可以用于数据的转换、过滤和聚合等操作,支持多种数据源&#…

【SpringCloud Alibaba】(四)使用 Feign 实现服务调用的负载均衡

在上一文中&#xff0c;我们实现了服务的自动注册与发现功能。但是还存在一个很明显的问题&#xff1a;如果用户微服务和商品微服务在服务器上部署多份的话&#xff0c;之前的程序无法实现服务调用的负载均衡功能。 本文就带着大家一起实现服务调用的负载均衡功能 1. 负载均衡…

Vue2基础五、工程化开发

零、文章目录 Vue2基础五、工程化开发 1、工程化开发和脚手架 &#xff08;1&#xff09;开发 Vue 的两种方式 核心包传统开发模式&#xff1a;基于 html / css / js 文件&#xff0c;直接引入核心包&#xff0c;开发 Vue。工程化开发模式&#xff1a;基于构建工具&#xf…

让你 React 组件水平暴增的 5 个技巧

目录 透传 className、style 通过 forwardRef 暴露一些方法 useCallback、useMemo 用 Context 来跨组件传递值 React.Children、React.cloneElement 总结 最近看了一些 Ant Design 的组件源码&#xff0c;学到一些很实用的技巧&#xff0c;这篇文章来分享一下。 首先&am…

LeetCode111. 二叉树的最小深度

111. 二叉树的最小深度 文章目录 [111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/)一、题目二、题解方法一&#xff1a;迭代方法二&#xff1a;递归 一、题目 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子…

理光310/320/325系列激光打印机加粉后不换芯片清零方法

设置步骤&#xff1a; 依次按停止107开始键进入维修模式&#xff0c; 按下键两次选择Engine Maintenance,点OK键进入&#xff0c; 按上键选择Refill mode项后点OK键&#xff0c; 按下键选择到Pure refill mode后点Ok键(默认是Auto refill mode)&#xff0c; 然后按两次后退…

GB/T 25000.51解读——软件产品的功能性怎么测?

前面的文章中&#xff0c;我们为大家整体介绍了GB/T 25000.51-2016《软件产品质量要求和测试细则》国家标准的结构和所涵盖的内容&#xff0c;从本文开始&#xff0c;我们将针对标准中规定的软件产品的八大质量特性进行详细解读。本文为大家解读软件产品的功能性测试。 软件产…

微服务契约测试框架-Pact

契约测试 契约测试的思想就是将原本的 Consumer 与 Provider 间同步的集成测试&#xff0c;通过契约进行解耦&#xff0c;变成 Consumer 与 Provider 端两个各自独立的、异步的单元测试。 契约测试的优点&#xff1a; 契约测试与单元测试以及其它测试之间没有重复&#xff0c…