小程序学习07—— uniapp组件通信props和$emit和插槽语法

目录

一  父组件向子组件传递消息

1.1 props

(a)传递静态或动态的 Prop

(b)单向数据流

二  子组件通知父组件

2.1 $emit

(a)定义自定义事件

(b)绑定自定义事件

三  插槽语法

3.1 Slot

(a)插槽内容与出口

 (b)举例来说


一  父组件向子组件传递消息

1.1 props

props 可以是数组或对象,用于接收来自父组件的数据。props 可以是简单的数组,或者使用对象作为替代,对象允许配置高级选项,如类型检测、自定义验证和设置默认值。

选项类型说明
typeString 、 Number 、 Boolean 、 Array 、 Object 、 Date 、 Function 、 Symbol ,任何自定义构造函数、或上述内容组成的数组会检查一个 prop 是否是给定的类型,否则抛出警告,复杂数据类型需要通过 PropType 标记类型,详见。
defaultany为该 prop 指定一个默认值。如果该 prop 没有被传入,则换做用这个值。对象或数组的默认值必须从一个工厂函数返回。
requiredBoolean定义该 prop 是否是必填项。
validatorFunction自定义验证函数会将该 prop 的值作为唯一的参数代入。在非生产环境下,如果该函数返回一个 false 的值 (也就是验证失败),一个控制台警告将会被抛出。

示例:

	<template>
		<view>
			<!-- 我是子组件componentA -->
			<view>{{age}}</view>
		</view>
	</template>
	<script>
		export default {
			props: {
				// 检测类型 + 其他验证
				age: {
					type: Number,
					default: 0,
					required: true,
					validator: function(value) {
						return value >= 0
					}
				}
			}
		}
	</script>
	<template>
		<view>
			<!-- 我是父组件 -->
			<componentA :age="10"></componentA>
		</view>
	</template>

(a)传递静态或动态的 Prop

  • 可以像这样给 `prop` 传入一个静态的值:
<navbar name="navbar组件" />

  • 可以通过 v-bind 或简写 : 动态赋值,例如:

  • 在使用 <script setup> 的单文件组件中,props 可以使用 defineProps() 宏来声明,还可以使用对象的形式:

(b)单向数据流

        所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定: 父级 prop 的更新会向下流动到子组件中,但是反过来则不行。这样会防止从子组件意外变更父级组件的状态,从而导致你的应用的数据流向难以理解。

每次父级组件发生变更时,子组件中所有的  prop 都将会刷新为最新的值。这意味着你不应该在一个子组件内部改变  prop。如果你这样做了,Vue 会在浏览器的控制台中发出警告。


二  子组件通知父组件

2.1 $emit

(a)定义自定义事件

父组件可以通过 v-on (缩写为 @) 来监听事件

(b)绑定自定义事件

直接使用 `$emit` 方法触发自定义事件。当在 emits 选项中定义了原生事件 (如 click) 时,将使用组件中的事件替代原生事件侦听器。

三  插槽语法

3.1 Slot

(a)插槽内容与出口

<slot> 元素是一个插槽出口 (slot outlet),标示了父元素提供的插槽内容 (slot content) 将在哪里被渲染。

 (b)举例来说

这里有一个 <FancyButton> 组件,可以像这样使用:

<FancyButton>
  Click me! <!-- 插槽内容 -->
</FancyButton>

而 <FancyButton> 的模板是这样的:

<button class="fancy-btn">
  <slot></slot> <!-- 插槽出口 -->
</button>

组件最终渲染出的 DOM 是这样:

<button class="fancy-btn">
  Click me!
</button>

作为一条规则,请记住: 父级模板里的所有内容都是在父级作用域中编译的;子模板里的所有内容都是在子作用域中编译的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【视频笔记】基于PyTorch从零构建多模态(视觉)大模型 by Umar Jamil【持续更新】

视频链接: 基于PyTorch从零构建多模态(视觉)大模型 by Umar Jamil 从头编写一个视觉语言模型:PloyGamma,是谷歌的一个模型 1:原始图像 2:视觉编码器(本文是viT),通过对比学习进行训练。这个对比学习最开始是CLIP,后来被谷歌改成了SigLIP 3:线性投影层 4:如何将图…

UniApp | 从入门到精通:开启全平台开发的大门

UniApp | 从入门到精通:开启全平台开发的大门 一、前言二、Uniapp 基础入门2.1 什么是 Uniapp2.2 开发环境搭建三、Uniapp 核心语法与组件3.1 模板语法3.2 组件使用四、页面路由与导航4.1 路由配置4.2 导航方法五、数据请求与处理5.1 发起请求5.2 数据缓存六、样式与布局6.1 样…

《数据结构》期末考试测试题【中】

《数据结构》期末考试测试题【中】 21.循环队列队空的判断条件为&#xff1f;22. 单链表的存储密度比1&#xff1f;23.单链表的那些操作的效率受链表长度的影响&#xff1f;24.顺序表中某元素的地址为&#xff1f;25.m叉树第K层的结点数为&#xff1f;26. 在双向循环链表某节点…

Leffa 虚拟试衣论文笔记

Leffa: Learning Flow Fields in Attention for Controllable Person Image Generation https://github.com/xuanandsix/awesome-virtual-try-on-note/tree/main/Leffa 打开链接查看详情&#xff0c;更多虚拟试穿论文持续更新。

BP神经网络的反向传播算法

BP神经网络&#xff08;Backpropagation Neural Network&#xff09;是一种常用的多层前馈神经网络&#xff0c;通过反向传播算法进行训练。反向传播算法的核心思想是通过计算损失函数对每个权重的偏导数&#xff0c;从而调整权重&#xff0c;使得网络的预测输出与真实输出之间…

Git快速入门(三)·远程仓库GitHub以及Gitee的使用

目录 1. 远程仓库GitHub 1.1 登录 1.2 创建库 1.3 创建文件 1.4 修改文件 1.5 创建分支 1.6 删除库 1.7 将远程仓库下载到本地 1.7.1 关联登录 1.7.2 克隆 1.7.3 通过GitHub Desktop更改远程库 2. 远程仓库Gitee 2.1 登录 2.2 创建文件 2.3 关联…

【JVM】总结篇-字节码篇

字节码篇 Java虚拟机的生命周期 JVM的组成 Java虚拟机的体系结构 什么是Java虚拟机 虚拟机&#xff1a;指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 &#xff0c;是物理机的软件实现。常用的虚拟机有VMWare&#xff0c;Visual Box&…

Springboot日志打印、SpringBoot集成Log4j2(附源码)、异步日志

文章目录 一、Log4j2介绍1.1、常用日志框架1.2、为什么选用log4j2 二、Log4j2整合步骤2.1、引入jar包2.2、配置文件2.3、配置文件模版 三、配置参数简介3.1、日志级别3.2、日志格式&#xff08;PatternLayout&#xff09;3.3、Appenders组件列表3.3.1、Console3.3.2、File3.3.3…

上传本地项目或文件到SVN服务器(图片讲解,超简单)

上传本地项目或文件到SVN服务器&#xff08;图片讲解&#xff0c;超简单&#xff09; 1、使用TortoiseSVN2、输入SVN远程仓库地址3、添加文件或文件夹 需求&#xff1a;将本地的文件上传到SVN服务器上指定路径。前提&#xff1a;已经安装好TortoiseSVN 1、使用TortoiseSVN 右…

使用 HEIC/HEIF 编码器将 HEIC 转换为 JPEG

随着iOS 11之后新的HEIF图像格式的发布&#xff0c;在当前几乎所有软件仅支持JPEG图像而不支持HEIC图像的环境下&#xff0c;这对Apple来说可能是一个巨大的挑战。不过&#xff0c;仍有一些方法可以为有需要的用户打开、查看、传输或转换iOS 11 HEIC 照片格式。本文将向您介绍 …

基于JAVA+SSM的教学资料管理系统

基于JAVASSM的教学资料管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; 哈喽兄弟们&a…

stm32 移植RTL8201F(正点原子例程为例)

最近在工作中需要使用RTL8201F&#xff0c;在网上找了很多帖子&#xff0c;没有找到合适的&#xff0c;自己翻资料移植了一个。 模板工程使用的是正点原子的f407探索版的例程&#xff0c;原子使用的是LAN8720,需要把他的驱动修改成为我们自己用的RTL8201F。 1.将PHY_TYPE改成我…

RK3588+麒麟国产系统+FPGA+AI在电力和轨道交通视觉与采集系统的应用

工业视觉识别系统厂家提供的功能主要包括&#xff1a; 这些厂家通过先进的视觉识别技术&#xff0c;实现图像的采集、处理与分析。系统能够自动化地完成质量检测、物料分拣、设备监控等任务&#xff0c;显著提升生产效率和产品质量。同时&#xff0c;系统具备高度的灵活性和可扩…

Linux umami网站统计工具自定义API开发

Linux umami网站统计工具自定义API开发 一、src/queries/analytics/下添加调用sql查询文件&#xff1a;二、src/queries/index.js文件中增加导出模块内容&#xff1a;三、src/pages/api/下根据目录添加接口方法文件&#xff1a;四、构建项目&#xff0c;启动。1、到umami目录&a…

Meta 的新策略,将 AI 生成的角色整合到其社交媒体平台

一、Meta新年规划及引人注目的举措 多元规划背景&#xff1a;在新的一年&#xff0c;Meta制定了多维度的战略规划&#xff0c;旨在巩固并拓展其在科技领域的影响力。增强现实与元宇宙是其长期布局的重点方向&#xff0c;期望借此塑造未来互联网的交互形态&#xff1b;面对TikTo…

微信小程序滑动解锁、滑动验证

微信小程序简单滑动解锁 效果 通过 movable-view &#xff08;可移动的视图容器&#xff0c;在页面中可以拖拽滑动&#xff09;实现的简单微信小程序滑动验证 movable-view 官方说明&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/component/movable-view.ht…

SWM221系列芯片之电机应用及控制

经过对SWM221系列的强大性能及外设资源&#xff0c;TFTLCD彩屏显示及控制进行了整体介绍后&#xff0c;新迎来我们的电控篇---SWM221系列芯片之电机应用及控制。在微控制器市场面临性能、集成度与成本挑战的当下&#xff0c;SWM221系列芯片以其卓越性能与创新设计&#xff0c;受…

软考教材重点内容 信息安全工程师 第 12 章网络安全审计技术原理与应用

12.1.1 网络安全审计概念 网络安全审计是指对网络信息系统的安全相关活动信息进行获取、记录、存储、分析和利用的工作。网络安全审计的作用在于建立“事后”安全保障措施&#xff0c;保存网络安全事件及行为信息&#xff0c;为网络安全事件分析提供线索及证据&#xff0c;以便…

代码随想录算法训练营day21

代码随想录算法训练营 —day21 文章目录 代码随想录算法训练营前言一、669. 修剪二叉搜索树递归法迭代法 二、108.将有序数组转换为二叉搜索树递归法迭代法 三、538.把二叉搜索树转换为累加树递归法 总结 前言 今天是算法营的第21天&#xff0c;希望自己能够坚持下来&#xf…

Jetson系列部署YOLOv8模型教程

简介 NVIDIA Jetson系列是专为边缘计算设计的紧凑型计算模块&#xff0c;其目标用户为AI开发者、嵌入式系统工程师以及需要在设备端实时进行数据处理与AI推断的创新者。通过提供灵活的硬件平台&#xff0c;结合NVIDIA强大的GPU计算资源&#xff0c;Jetson系列能够支持复杂的机…