vue3 setup中defineEmits与defineProps的使用案例

目录

一、defineEmits的使用

二、 defineProps的使用

总结


一、defineEmits的使用

使用说明
1、在子组件中调用defineEmits并定义要发射给父组件的方法

const emits = defineEmits(['foldChange'])

2、使用defineEmits会返回一个方法,使用一个变量emits(变量名随意)去接收

3、在子组件要触发的方法中,调用emits并传入发射给父组件的方法以及参数

 emits('foldChange', isFold.value)

1.子组件定义:

<template><div class="nav-header"><el-icon size="25" class="fold-menu" @click="handleFoldClick"><component :is="`${isFold ? 'Fold' : 'Expand'}`"></component></el-icon><!-- <el-icon><Fold /></el-icon> --><!-- <Expand --></div>
</template><script setup lang="ts">import { ref, defineEmits } from 'vue'// 定义发射给父组件的方法
const emits = defineEmits(['foldChange'])const isFold = ref(false)const handleFoldClick = () => {isFold.value = !isFold.valueemits('foldChange', isFold.value)
}</script>

2.父组件接收使用:

<template><div class="main"><el-container class="main-content"><el-aside :width="isCollapse ? '60px' : '210px'"><nav-menu :collapse="isCollapse"></nav-menu></el-aside><el-container class="page"><el-header class="page-header"><nav-header @foldChange="handleFoldChange"></nav-header></el-header><el-main class="page-content">Main</el-main></el-container></el-container></div>
</template><script lang="ts" setup>import NavMenu from '@/components/nav-menu'
import NavHeader from '@/components/nav-header'
import { ref } from 'vue'const isCollapse = ref(false)const handleFoldChange = (isFold: boolean) => {isCollapse.value = isFold
}</script>

二、 defineProps的使用

使用说明
1、在父组件中定义String、Number、Boolean、Array、Object、Date、Function、Symbol这些类型的数据
2、在子组件中通过defineProps API来进行接受
3、通过子组件事件修改变量值,同时将值传递给父组件,对父组件的变量进行赋值
4、向子组件传递非props的属性,用法及效果如下
 

1.1  子组件定义 方式一

<template><h3 v-bind="$attrs">字符串: {{props.str}}</h3><h3>数字: {{props.num}}</h3><h3>布尔: {{props.bool}}</h3><h3>数组: {{props.arr}}</h3><h3>对象: {{props.obj}}</h3><h3>日期: {{props.date}}</h3><h3>Symbol: {{props.a}} - {{props.b}}</h3>
</template>
<script setup>import { defineProps } from 'vue'const props = defineProps({str: String,num: Number,bool: Boolean,arr: Array,obj: Object,date: Date,getConsole: Function,message: Object,a: Symbol,b: Symbol})props.getConsole()
</script>

1.2  子组件定义 方式二

<template><div class="shopList"><div class="shopContent" :class="{tabActive: currentIndex === index }"v-for="(tab, index) in tabBars" :key="index"@click="itemClick(index)">{{tab.name}}</div></div>
</template>
<script  setup>import { defineProps,ref,defineEmits } from 'vue'// 接受父组件传递的数据const props = defineProps({tabBar: {type: Array,default: () => []}})// 定义属性const currentIndex = ref(0)const tabBars = JSON.parse(JSON.stringify(props.tabBar))// 定义发射给父组件的方法const emits = defineEmits(['tabClick'])// tab点击的方法const itemClick = (e) => {currentIndex.value = eemits('tabClick', currentIndex.value)}
</script>
<style lang="scss" scoped>
.shopList {display: flex;justify-content: center;align-items: center;.shopContent {flex: 1;text-align: center;padding: 20px;cursor: pointer;}.tabActive {border-bottom: 3px solid #bf0706;color: #bf0706;}
}
</style>

2、父组件使用 

<template><showMessage:str="str":num="num":bool="bool":arr="arr":obj="obj":date="date":a = "a":b="b":getConsole="getConsole"id="abc"class="bcd"></showMessage>
</template>
<script  setup>
import showMessage from './ShowMessage.vue'// 定义属性const str = '吃饭、睡觉、敲代码'const num =  100const bool = trueconst arr = ['apple', 'lemon', 'orange']const obj = {name: 'coderXiao',age: 18}const date = new Date()const a = Symbol('好好学习')const b = Symbol('天天向上')// 定义方法const getConsole = () => {console.log('传递给子组件的方法');}
</script>
<style lang="scss" scoped></style>

总结

好记性不如烂笔头,放了国庆八天假回来,看着代码好陌生...

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

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

相关文章

常用git命令

git子模块 仓库一起拉取&#xff1a; git clone --recurse-submodules 父仓库地址分开拉取&#xff1a; git clone 父仓库地址 //进入仓库目录&#xff0c;然后执行下面语句 git submodule init // 初始化子模块 git submodule update // 更新子模块与主仓库中的子模块代码同…

从基础到卷积神经网络(第12天)

1. PyTorch 神经网络基础 1.1 模型构造 1. 块和层 首先&#xff0c;回顾一下多层感知机 import torch from torch import nn from torch.nn import functional as Fnet nn.Sequential(nn.Linear(20, 256), nn.ReLU(), nn.Linear(256, 10))X torch.rand(2, 20) # 生成随机…

<图像处理> Fast角点检测

Fast角点检测 基本原理是使用圆周长为N个像素的圆来判定其圆心像素P是否为角点&#xff0c;如下图所示为圆周长为16个像素的圆&#xff08;半径为3&#xff09;&#xff1b;OpenCV还提供圆周长为12和8个像素的圆来检测角点。 相对中心像素的位置信息 //圆周长为16 static c…

Lumen/Laravel - 事件机制原理与工作流程 - 探究

1.应用场景 主要用于学习与探究Lumen/Laravel的事件机制原理与工作流程。 2.学习/操作 1.文档阅读 chatgpt & 其他资料 2.整理输出 2.1 是什么 TBD 2.2 为什么需要「应用场景」 TBD 2.3 什么时候出现「历史发展」 TBD 2.4 怎么实践 TBD 截图 后续补充 ... 3.问题…

深度学习基础知识 Dataset 与 DataLoade的用法解析

深度学习基础知识 Dataset 与 DataLoade的用法解析 1、Dataset2、DataLoader参数设置&#xff1a;1、pin_memory2、num_workers3、collate_fn分类任务目标检测任务 1、Dataset 代码&#xff1a; import torch from torch.utils import dataclass MyDataset(torch.utils.data.D…

语言模型编码中/英文句子格式详解

文章目录 前言一、Bert的vocab.txt内容查看二、BERT模型转换方法(vocab.txt)三、vocab内容与模型转换对比四、中文编码总结 前言 最近一直在学习多模态大模型相关内容&#xff0c;特别是图像CV与语言LLM模型融合方法&#xff0c;如llama-1.5、blip、meta-transformer、glm等大…

Elasticsearch 和 Arduino:一起变得更好!

作者&#xff1a;Enrico Zimuel 使用 Arduino IoT 设备与 Elasticsearch 和 Elastic Cloud 进行通信的简单方法 在 Elastic&#xff0c;我们不断寻找简化搜索体验的新方法&#xff0c;并开始关注物联网世界。 来自物联网的数据收集可能非常具有挑战性&#xff0c;尤其是当我们…

Docker【部署 05】docker使用tensorflow-gpu安装及调用GPU踩坑记录

tensorflow-gpu安装及调用GPU踩坑记录 1.安装tensorflow-gpu2.Docker使用GPU2.1 Could not find cuda drivers2.2 was unable to find libcuda.so DSO2.3 Could not find TensorRT&&Cannot dlopen some GPU libraries2.4 Could not create cudnn handle: CUDNN_STATUS_…

《Unity Shader入门精要》笔记06

基础纹理 单张纹理纹理的属性Alpha SourceWrap ModeFilter Mode 凹凸映射高度纹理法线纹理实践在切线空间下计算在世界空间下计算 Unity中的法线纹理类型Create from Grayscale 渐变纹理遮罩纹理其他遮罩处理 单张纹理 我们通常会使用一张纹理来代替物体的漫反射颜色 Shader …

Nie et al. 2010 提出的不等式定理

这里写自定义目录标题 定理 定理 For any vector a a a and b b b, we have ∥ a ∥ 2 − ∥ a ∥ 2 2 ∥ b ∥ 2 ≤ ∥ b ∥ 2 − ∥ b ∥ 2 2 ∥ b ∥ 2 \|a\|_{2} - \frac{\|a\|_{2}}{2\|b\|_{2}} \leq \|b\|_{2} - \frac{\|b\|_{2}}{2\|b\|_{2}} ∥a∥2​−2∥b∥2​∥…

K8s Kubernetes Namespave Pod Label Deployment Service 实战

本章节将介绍如何在kubernetes集群中部署一个nginx服务&#xff0c;并且能够对其进行访问。 Namespace Namespace是kubernetes系统中的一种非常重要资源&#xff0c;它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 默认情况下&#xff0c;kubernetes集群中…

面试10.13

笔试&#xff1a; 判断大小端的代码不使用库函数自己实现一个strcpy函数 自我介绍 项目相关 你项目中使用了Qt&#xff0c;你都用过哪些东西你使用了QTableView&#xff0c;它的初始界面是比较丑陋的&#xff0c;有想过如何优化吗信号和槽在不同线程间的使用方法有哪些&…

MySQL之双主双从读写分离

一个主机 Master1 用于处理所有写请求&#xff0c;它的从机 Slave1 和另一台主机 Master2 还有它的从 机 Slave2 负责所有读请求。当 Master1 主机宕机后&#xff0c; Master2 主机负责写请求&#xff0c; Master1 、 Master2 互为备机。架构图如下 : 准备 我们…

升级教育技术软件的多合一解决方案

当今时代技术和教育联系越来越紧密&#xff0c;教育机构对强大、安全、灵活的 IT 解决方案的探索至关重要。 全球事件、技术进步以及学生和教职员工不断变化的需求影响着不断变化的教育格局&#xff0c;我们要采取变革性的方法来确保教育的连续性和质量提升。 Splashtop Ente…

GEE:数据预处理的细节(处理顺序。比如, select() 和 filter() 要优先于 map())

作者:CSDN @ _养乐多_ 大家在数据预处理的时候,是不是随意进行处理,并没有考虑 Google Earth Engine(GEE)性能的问题?比如选择数据集的时候,先执行map函数,再按时间选择数据?不同的处理顺序会导致不同的计算成本。 因此,本文将探讨如何在 GEE 中筛选和选择数据集合…

力扣刷题 day43:10-13

1.完全平方数 给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4、9 和 16 都是完全平方数&#xff0c;而 3 …

20基于MATLAB的车牌识别算法,在环境较差的情景下,夜间识别度很差的车牌号码可以精确识别出具体结果,程序已调通,可直接替换自己的数据跑。

基于MATLAB的车牌识别算法&#xff0c;在环境较差的情景下&#xff0c;夜间识别度很差的车牌号码可以精确识别出具体结果&#xff0c;程序已调通&#xff0c;可直接替换自己的数据跑。 20matlab车牌识别 (xiaohongshu.com)

【融合ChatGPT等AI模型】Python-GEE遥感云大数据分析、管理与可视化及多领域案例实践应用

目录 第一章 理论基础 第二章 开发环境搭建 第三章 遥感大数据处理基础与ChatGPT等AI模型交互 第四章 典型案例操作实践 第五章 输入输出及数据资产高效管理 第六章 云端数据论文出版级可视化 更多应用 随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近…

react+antd封装表格组件2.0

reactantd封装表格组件2.0 1.0版本 仅仅封装组件&#xff0c;不涉及方法需要掌握知识点useImperativeHandle 组件代码引用 1.0版本 仅仅封装组件&#xff0c;不涉及方法 1.0 仅封装组件 此方法把所用方法集体封装&#xff0c;以后就可以无脑开发拉&#xff01; 只需传入路径&…

go 流程控制之switch 语句介绍

go 流程控制之switch 语句介绍 文章目录 go 流程控制之switch 语句介绍一、switch语句介绍1.1 认识 switch 语句1.2 基本语法 二、Go语言switch语句中case表达式求值顺序2.1 switch语句中case表达式求值次序介绍2.2 switch语句中case表达式的求值次序特点 三、switch 语句的灵活…