Vue3的setup语法糖下的defineEmit、defineExpose、defineProps函数

news2024/11/15 21:24:46

Vue3的setup语法糖下的defineEmit、defineExpose、defineProps父子传值

setup语法糖

setup作为vue3的新增生命周期hooks,其替代了vue2的beforeCreate、created,注意setup的执行时间是位于beforeCreate之前,熟悉vue2的都知道,在beforeCreate时是无法访问data、method的数据的,如果实在需要在setup中访问data及method的数据及方法可在setup中通过调用onBeforeMount挂载前的生命周期去访问data及method的数据及方法。

export default {
  name: 'test',
  data() {
    return {
		
    }
  },
  methods: {

  },
  setup(props, ctx) {
  	const num = 1
    console.log('setup');
    onMounted(() => {
      console.log('onMounted');
    })
    onBeforeUpdate(() => {
      console.log('onBeforeUpdate');
    })
    return {num:num}
  },
  beforeCreate() {
    console.log('beforeCreate');
  },
  created() {
    console.log('created');
  },
  beforeMount() {
    console.log('beforeMount');
  },
}
</script>

在这里插入图片描述

以上都是以vue2的思想结构去编写的script标签的,在vue3.2版本开始,引入了setup语法糖,以上不难发现在setup中有着vue生命周期的钩子函数,其效果等同于外部的生命周期的钩子函数,且在setup中需要通过return才能暴露setup中声明的数据,而在setup语法糖下,其整个script都为setup的钩子函数。

setup语法糖下的父子组件的传值

在script setup下,不用对defineProps、defineEmits、defineExpose进行声明,直接用即可,其会随着script setup 被一同处理编译。

父节点

<template>
  <Chilren :data="data" @teach="teach" ref="ChilrenRef"></Chilren>
</template>
<script lang="ts" setup>
import { reactive } from 'vue';
import Chilren from './index.vue'
const ChilrenRef = ref()
const data = reactive({
  dadName: '父亲',
  age: 45
})
function teach() {
  console.log('叫我爸爸');
}
//需要等dom挂载后才能访问到dom结点
onMounted(() => {
  console.log(ChilrenRef.value.num);
})

</script>

子节点


//子组件
<template>
  <div>
    {{ prop.data.dadName }}
    {{ prop.data.age }}
  </div>
</template>
<script lang="ts" setup>
class type {
  data: Object
  data1?: Object
  isShow?: boolean
}
//对接受参数进行类型限制
interface Props {
  data: type
}
//接收父组件的数据
const prop = defineProps<Props>()
//接收父组件传的方法
const emit = defineEmits(['teach'])
//执行方法
emit('teach')
const num = ref(1)
defineExpose({
  num
})
</script>

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

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

相关文章

C++——详解类模板

纵有疾风起&#xff0c;人生不言弃。本文篇幅较长&#xff0c;如有错误请不吝赐教&#xff0c;感谢支持。 &#x1f4ac;文章目录 一.类模板①类模板的定义与实例化②类模板的实例化③类模板的具体化&#xff08;特化、特例化&#xff09;1️⃣完全具体化2️⃣部分具体化3️⃣…

xxl-job源码改造集成:适配opengauss数据、适配单点登录等

目录 一、摘要 二、集成方案 三、集成步骤 3.1 springboot集成xxl-job 3.2 适配高斯数据库(postgresql) 3.3 页面集成 3.4 登录集成 3.5 接口集成 四、部署 一、摘要 公司现在打算重构产品&#xff0c;将原来的quartz替换成xxl-job&#xff0c;主要因为quartz不能动态…

多通道分离与合并

1、分离 2、合并 Mat img imread("F:/testMap/plan.png");Mat imgs[3];split(img,imgs);//分离Mat img0,img1,img2;img0 imgs[0];img1 imgs[1]; img2 imgs[2];Mat img_H;merge(imgs,3,img_H);//合并vector<Mat> imgsV; imgsV.push_back(img0);imgsV.push_b…

5.8.3 TCP连接管理(一)TCP连接建立

5.8.3 TCP连接管理&#xff08;一&#xff09;TCP连接建立 我们知道TCP是面向连接的传输协议&#xff0c;在传输连接的建立和释放是每一次面向连接通信必不可少的过程&#xff0c;因此传输连接的管理使得传输连接的建立和释放的过程都能够正常的进行。 一、使用Wireshark查看…

UE4/5用GeneratedDynamicMeshActor网格细分静态网格体【用的是ue5建模模式的box,其他的没有作用】

目录 制作 逻辑&#xff1a; 效果&#xff1a; ​编辑 代码&#xff1a; 制作 前面和之前的流程一样&#xff0c;打开插件和继承GeneratedDynamicMeshActor创建一个蓝图&#xff1a; 逻辑&#xff1a; 两个函数对应了两种细分方法 上面的细分模式是&#xff1a;Loop细…

JupyterNotebook基本操作

目录 Jupyter notebook文件操作 创建文件 修改文件名 复制文件 移动文件 删除文件 上传文件 下载文件 Jupyter notebook单元格操作 内容类型 编辑模式 快捷键 对照表 命令模式 编辑模式 查看快捷键 进入Jupyter Notebook主界面“File”中 VSCode配置Jupyter…

Bootstrap 表单

文章目录 Bootstrap 表单表单布局垂直或基本表单内联表单水平表单支持的表单控件输入框&#xff08;Input&#xff09;文本框&#xff08;Textarea&#xff09;复选框&#xff08;Checkbox&#xff09;和单选框&#xff08;Radio&#xff09;选择框&#xff08;Select&#xff…

【Go】Go 语言教程--介绍(一)

文章目录 Go 语言特色Go 语言用途第一个 Go 程序Go 语言环境安装UNIX/Linux/Mac OS X, 和 FreeBSD 安装Windows 系统下安装安装测试 Go 是一个开源的编程语言&#xff0c;它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompso…

文生图技术stable diffusion入门实战

文章目录 0. 环境搭建0.1 Windows0.1.1 git环境安装0.1.2 python 环境搭建0.1.2.1 配置pip国内镜像源 0.1.3 stable diffusion环境搭建0.1.3.1 远程访问Stable diffusion 1. 基础知识1.1 Stable Diffusion Webui及基础参数1.2 参数说明 0. 环境搭建 0.1 Windows 0.1.1 git环境…

电子时钟制作(瑞萨RA)(3)----使用J-Link烧写程序到瑞萨芯片

概述 这一节主要讲解如何使用J-Link对瑞萨RA芯片进行烧录。 硬件准备 首先需要准备一个开发板&#xff0c;这里我准备的是芯片型号R7FA2E1A72DFL的开发板&#xff1a; 视频教程 https://www.bilibili.com/video/BV1kX4y1v7tL/ 电子时钟制作(瑞萨RA)----(2)使用串口进行程序…

初学spring5(八)整合MyBatis

学习回顾&#xff1a;初学spring5&#xff08;七&#xff09;AOP就这么简单 一、步骤 1、导入相关jar包 junit <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version> </dependency>m…

如何使用RobotFramework编写好的测试用例

目录 概述 命名 测试套件命名 测试用例命名 关键字命名 setup和teardown的命名 文档 测试套件文档 测试用例文档 用户关键字文档 测试套件结构 测试用例结构 工作流测试 数据驱动测试 用户关键字 变量 变量的命名 传参和返回值 避免使用Sleep关键字 我们AT…

算法设计与分析 课程期末复习简记(更新中)

网络流 下面是本章需要掌握的知识 • 流量⽹络的相关概念 • 最⼤流的概念 • 最⼩割集合的概念 • Dinic有效算法的步骤 • 会⼿推⼀个流量⽹络的最⼤流 下面对此依次进行复习 首先看流量网络的相关概念 上面是课程PPT中的定义&#xff0c;真是抽象 实际上&#xff0c;我们直接…

Maynor的博客专家成长之路——暨2023年中复盘

文章目录 博客专家成长之路——暨2023年中复盘前言念念不忘的博客专家每天只做三件事敲代码写博客健健身 我的感悟 不足之处未来&#xff1a;和CSDN共同成长最后 博客专家成长之路——暨2023年中复盘 前言 ​ 2023年不知不觉已经过去了半年有余&#xff0c;也是时候作年中复盘…

WEB界面测试

目录 前言&#xff1a; 摘要: WEB界面测试&#xff0c;最大的难度之一可能就是兼容性测试了 WEB界面测试&#xff0c;注重用户体验 WEB界面测试&#xff0c;注意用户的使用习惯 前言&#xff1a; Web界面测试是一种通过模拟用户与Web应用程序的交互来验证其功能和用户体验…

基于自然语言处理的多模态模型_综述

A Survey on Multimodal Large Language Models&#xff1b; 论文链接&#xff1a;https://arxiv.org/pdf/2306.13549.pdf 项目链接(实时更新最新论文&#xff0c;已获1.8K Stars)&#xff1a;https://github.com/BradyFU/Awesome-Multimodal-Large-Language-Models 研究背景 …

线程安全问题之原因及解决方案

线程安全问题 根本原因代码结构原子性解决方案&#xff1a;synchronized 内存可见性问题解决方案 volatile 指令重排序问题wait和notify判定一个代码是否线程安全&#xff0c;一定要具体问题具体分析!!! 根本原因 根本原因&#xff1a;多线程抢占式执行&#xff0c;随机调度。 …

ESP8266-NodeMCU搭建Arduino IDE开发环境

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、准备工作二、搭建步骤1.打开Arduino IDE 首选项2.打开Arduino IDE的“开发板管理器”3.在Arduino IDE的开发板菜单中找到“NodeMCU开发板”4.设置Arduino IDE的…

实验二:子程序设计实验

一、实验目的闻明找强的的掌握于程府的定又和调用方法掌握子程布的程库设计与调试方法 实验要求. 说明实现本实验需要掌握的知识及本实验害要的实验环境 二、实验要求了解萄单汇师培长程产没计与调武了解江编语子能店定义了解汇编语着子程序设计 实验内容 阐明实验具体内容及实…

3. Linux组件之内存池的实现

文章目录 一、为什么需要内存池二、内存池的工作流程三、内存池的实现3.1 数据结构3.2 接口设计3.2.1 创建内存池3.2.2 内存池销毁3.2.3 内存分配1. 分配小块内存2. 分配大块内存 3.2.4 内存池的释放3.2.5 内存池重置 3.3 完整代码 一、为什么需要内存池 应用程序使用内存&…