vue3 的setup和生命周期

vue3 的setup和生命周期

许多文章认为setup执行时间在beforeCreate 和created 之间,但是通过实际测试发现setup调用在beforecreate之前。

export default {beforeCreate() {console.log('beforeCreate running....');},created() {console.log("created running");},mounted() {console.log("mounted running");},setup() {let info = ref(0);const ins = getCurrentInstance();console.log('setup running....');return{}}
}

执行结果:
在这里插入图片描述
setup确确实实是最先执行了。
在vue3中setup代替了beforeCreate和created,函数里面无法使用data和methods方法中的数据。setup是集成性api,setup中定义的变量和方法,如在template模板中使用,变量需要使用ref或者reactive关键字定义,并且将使用到的方法和变量return出去,不然页面没有效果还报错的。

  • ref 用于定义基本数据加粗样式类型,比如string、number、boolean等。ref的本质其实还是reactive,当我们给ref函数传递一个值之后,ref函数会自动的转化成{value: xx},只是中间自动帮我们套了一层value。const name = ref(1) => name: {value: 1}
  • reactive用于定义复杂数据类型,比如数组、对象等。

在setup 中,有9个旧的生命周期钩子可以访问:

beforeCreate -> use setup()
created -> use setup()
其中setup函数是整合 created跟 beforeCreat
beforeMount ->onBeforeMount (挂载前)
mounted -> onMounted (挂载后)
beforeUpdate -> onBeforeUpdate**(更新前)**
updated -> onUpdated (更新后)
beforeDestroy -> onBeforeUnmount ( 销毁前)
destroyed ->onUnmounted ( 销毁后)

通过解构赋值的方式即可引入:

import { onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted, onActivated, onDeactivated, onErrorCaptured } from 'vue'export default {setup() {onBeforeMount(() => {// ... })onMounted(() => {// ... })onBeforeUpdate(() => {// ... })onUpdated(() => {// ... })onBeforeUnmount(() => {// ... })onUnmounted(() => {// ... })onActivated(() => {// ... })onDeactivated(() => {// ... })onErrorCaptured(() => {// ... })}
}

setup 函数将接收两个参数,props&context

注意:setup函数里面是没有this对象的,使用它的话会报 undefined。

  • setup 函数将接收两个参数,props&context
    第一个参数props,主要是用来获取属性传值,在使用之前必须现在Vue的props属性中先声明,才能在setup函数的第一个参数中获取到。
<template><ButtonClick :name="'MyButton'" />123
</template>
import { getCurrentInstance, ref } from 'vue'export default {props: {name: String},setup(props,ctx) {let info = ref(0);const ins = getCurrentInstance();console.log("props.name",props.name)return {info, handleClick, secondClick, thirdClick}}
}

在这里插入图片描述

- 第二个参数:context
和props一样的用法, 但是不写也可以用,context参数是一个普通的javascript对象,它对组件暴露三个属性:attrs、slots、emit。
attrs和slots是有状态的对象,它们总是会随组件本身的更新而更新。这意味着你应该避免对它们进行解构,并始终以attrs.x或slots.x的方式引用property。attrs和slots是非响应式的。应该在onUpdated生命周期钩子中执行此操作。

attrs:当父组件传递数据给子组件时,子组件不通过props接收,那么父组件传递的数据就到了 setup中的context的attrs属性。
slots:用于接收渲染父组件传递的插槽内容。
emit:向父组件触发事件。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle 几种行转列的方式 sum+decode sum+case when pivot

目录 原始数据&#xff1a; 方式一&#xff1a; 方式二&#xff1a; 方式三&#xff1a; unpivot的使用&#xff1a; 原始数据&#xff1a; 方式一&#xff1a; select t_name,sum(decode(t_item, item1, t_num, 0)) item1,sum(decode(t_item, item2, t_num, 0)) item2,s…

二、Mybatis相关概念

1.对象/关系数据库映射&#xff08;ORM) ORM全称Object/Relation Mapping&#xff1a;表示对象-关系映射的缩写ORM完成面向对象的编程语言到关系数据库的映射。当ORM框架完成映射后&#xff0c;程序员既可以利用面向对象程序设计语言的简单易用性&#xff0c;又可以利用关系数…

2023年09月CCF-GESP编程能力等级认证C++编程一级真题解析

一、单选题(共15题,共30分) 第1题 我们通常说的“内存”属于计算机中的( )。 A:输出设备 B:输入设备 C:存储设备 D:打印设备 答案:C 第2题 以下C++不可以作为变量的名称的是( )。 A:redStar B:RedStar C:red_star D:red star 答案:D 第3题 C++表达式…

Flume拦截器使用-实现分表、解决零点漂移等

1.场景分析 使用flume做数据传输时&#xff0c;可能遇到将一个数据流中的多张表分别保存到各自位置的问题&#xff0c;同时由于采集时间和数据实际发生时间存在差异&#xff0c;因此需要根据数据实际发生时间进行分区保存。 鉴于此&#xff0c;需要设计flume拦截器配置conf文件…

vue electron 应用在windows系统上以管理员权限打开应用

打开package.json文件&#xff0c;在build下的win增加配置 "requestedExecutionLevel": "requireAdministrator",

windows中的apache改成手动启动的操作步骤

使用cmd解决安装之后开机自启的问题 services.msc 0. 这个命令是打开本地服务找到apache的服务名称 2 .通过服务名称去查看服务的状态 sc query apacheapache3.附加上关掉和启动的命令&#xff08;换成是你的服务名称&#xff09; 关掉命令 sc stop apacheapache启动命令 …

医学三基答案在哪搜?4个大学生必备的搜题 #知识分享#职场发展

今天&#xff0c;我将分享一些受欢迎的、被大学生广泛使用的日常学习工具&#xff0c;希望能给你的学习生活带来一些便利和启发。 1.颐博咨询 这是一个网站 找题好用的在线搜题站,快考不限次搜题助手,问题截图搜题软件,练题通关考试试题大全。 2.题小聪 这是一个公众号 这…

ARP欺骗攻击利用之内网截取图片

Arp欺骗&#xff1a;目标ip的流量经过我的网卡&#xff0c;从网关出去。 Arp断网&#xff1a;目标ip的流量经过我的网卡 1. echo 1 >/proc/sys/net/ipv4/ip_forward 设置ip流量转发&#xff0c;不会出现断网现象 有时不能这样直接修改&#xff0c;还有另外一种方法 修…

猜猜谁是凶手?

目录 一、题目二、思路三、完整代码 一、题目 日本某地发生了一件谋杀案&#xff0c;警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词: A说&#xff1a;不是我。 B说&#xff1a;是C。 C说&#xff1a;是D。 D说&#xff1a;C在胡说 已知3个人说了…

Adb显示第3方应用的包名原理

Android早期版本实现原理请看 Android源码分析-pm命令的实现&#xff0c;列出包名pm list package&#xff0c;列出系统库pm list libraries_pm list packages-CSDN博客 Android12 对adb shell pm 实现原理做了重构&#xff1a;改成了template模式PackageManagerShellCommand …

SQL--多表查询

我们之前在讲解SQL语句的时候&#xff0c;讲解了DQL语句&#xff0c;也就是数据查询语句&#xff0c;但是之前讲解的查询都是单 表查询&#xff0c;而本章节我们要学习的则是多表查询操作&#xff0c;主要从以下几个方面进行讲解。 多表关系 项目开发中&#xff0c;在进行数据…

2024年10 个好用的AI简历工具盘点推荐

在职场竞争激烈的今天&#xff0c;一份出色的简历就像是你的秘密武器&#xff0c;能帮你在众多候选人中脱颖而出&#xff0c;赢得面试宝座。随着 ChatGPT 引领的 AI 浪潮席卷而来&#xff0c;各式各样的 AI 简历工具如雨后春笋般涌现。面对这样的背景&#xff0c;神器集今天为大…