Vue3-04_组件基础_下

props验证

指的是在封装组件时对外界传递过来的 props 数据进行合法性的校验,从而防止数据不合法的问题。

使用数组类型的 props 节点的缺点是无法为每个 prop 指定具体的数据类型。
使用对象类型的 props 节点,可以对每个 prop 进行数据类型的校验,

验证方法:

对象类型的 props 节点提供了多种数据验证方案,例如:
① 基础的类型检查
② 多个可能的类型
③ 必填项校验
④ 属性默认值
⑤ 自定义验证函数

export default {props: {// 基础类型检查//(给出 `null` 和 `undefined` 值则会跳过任何类型检查)propA: Number,// 多种可能的类型propB: [String, Number],// 必传,且为 String 类型propC: {type: String,required: true},// Number 类型的默认值propD: {type: Number,default: 100},// 对象类型的默认值propE: {type: Object,// 对象或者数组应当用工厂函数返回。// 工厂函数会收到组件所接收的原始 props// 作为参数default(rawProps) {return { message: 'hello' }}},// 自定义类型校验函数// 在 3.4+ 中完整的 props 作为第二个参数传入propF: {validator(value, props) {// The value must match one of these stringsreturn ['success', 'warning', 'danger'].includes(value)}},// 函数类型的默认值propG: {type: Function,// 不像对象或数组的默认,这不是一个// 工厂函数。这会是一个用来作为默认值的函数default() {return 'Default function'}}}
}

计算属性

计算属性本质上就是一个 function 函数,它可以实时监听 data 中数据的变化,并 return 一个计算后的新值,
供组件渲染 DOM 时使用

声明计算属性

为什么需要计算属性:

表达式虽然方便,但也只能用来做简单的操作。如果在模板中写太多逻辑,会让模板变得臃肿,难以维护。使用计算属性直接返回计算后的结果,使得逻辑主要在函数里处理,模板会更简洁。
① 计算属性必须定义在 computed 节点中
② 计算属性必须是一个 function 函数
③ 计算属性必须有返回值
④ 计算属性必须当做普通属性使用

计算属性与方法

计算属性值会基于其响应式依赖被缓存。一个计算属性仅会在其响应式依赖更新时才重新计算。相比之下,方法调用总是会在重渲染发生时再次执行函数。

官方文档补充

https://cn.vuejs.org/guide/essentials/computed

监听事件

什么监听事件

在封装组件时,为了让组件的使用者可以监听到组件内状态的变化,(比如父子组件之间)此时需要用到组件的监听事件。

如何使用监听事件

父组件监听

可以通过 v-on 或 @ 来选择性地监听子组件上抛的事件,就像监听原生 DOM 事件那样:

  <BlogPost@enlarge-text="postFontSize += 0.1"/>
子组件声明与调用

声明:
可以通过 emits 选项来声明需要抛出的事件:


<!-- BlogPost.vue -->
<script>
export default {props: ['title'],emits: ['enlarge-text']
}
</script>

调用
(1)可以直接通过绑定点击事件触发

   <button @click="$emit('enlarge-text')">Enlarge text</button>
(2)也可以通过函数中调用this.$emit 触发
 methods:{test(){this.$emit('enlarge-text')}}<button @click="test">Enlarge text</button>
参数传递

所有传入 e m i t ( ) 的额外参数都会被直接传向监听器。举例来说, emit() 的额外参数都会被直接传向监听器。举例来说, emit()的额外参数都会被直接传向监听器。举例来说,emit(‘foo’, 1, 2, 3) 触发后,监听器函数将会收到这三个参数值。

父组件中监听事件,我们可以先简单写一个内联的箭头函数作为监听器,此函数会接收到事件附带的参数:

<MyButton @increase-by="(n) => count += n" />

也可以用一个组件方法来作为事件处理函数,该方法也会接收到事件所传递的参数:

 <MyButton @increase-by="increaseCount" />methods: {increaseCount(n) {this.count += n}}

更多案例

https://cn.vuejs.org/guide/components/events.html#event-arguments

todolist demo

使用element-plus + vue实现的 todo list demo 主要逻辑在代码文件中
https://github.com/nebofeng/Vue3_demo/tree/master/02-todolist

IT 内容具有时效性,未避免更新后未同步,请点击查看最新内容:Vue3-04_组件基础_下
文章首发于:https://nebofeng.com/2024/06/28/vue3-04_%e7%bb%84%e4%bb%b6%e5%9f%ba%e7%a1%80_%e4%b8%8b/

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

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

相关文章

【云服务-5】Elasticsearch

Elasticsearch是什么&#xff1f;和大数据的关系&#xff1f; Elasticsearch 是一个分布式、开源的搜索和分析引擎,建立在 Apache Lucene 库之上。它的主要特点包括: &#xff08;1&#xff09;快速、可扩展的搜索和分析能力 &#xff08;2&#xff09;支持多租户和高可用性 …

python--基础篇--正则表达式--py脚本--题目解答

文章目录 验证输入用户名和QQ号是否有效并给出对应的提示信息从一段文字中提取出国内手机号码替换字符串中的不良内容拆分长字符串 验证输入用户名和QQ号是否有效并给出对应的提示信息 """ 验证输入用户名和QQ号是否有效并给出对应的提示信息要求&#xff1a;用…

常用数据库简单介绍

1. MySQL 优势&#xff1a; 开源和免费&#xff1a;MySQL 是一个开源数据库&#xff0c;拥有庞大的社区支持&#xff0c;易于获取和使用。性能优秀&#xff1a;对于中小型项目&#xff0c;MySQL 提供了高效的性能和响应速度。跨平台支持&#xff1a;MySQL 可以在各种操作系统…

扎克伯格抨击闭源人工智能竞争对手试图“创造上帝”

Meta 首席执行官马克-扎克伯格&#xff08;Mark Zuckerberg&#xff09;在周四发表的一篇访谈中谈到了他对人工智能未来的看法&#xff0c;他深信"不会只有一种人工智能"。扎克伯格强调了开源的价值&#xff0c;即把人工智能工具交到许多人手中&#xff0c;他还不忘贬…

抖音微短剧小程序源码搭建:实现巨量广告数据高效回传

在数字化营销日益盛行的今天&#xff0c;抖音微短剧小程序已成为品牌与观众互动的新渠道。这些短小精悍的剧目不仅能迅速抓住用户的注意力&#xff0c;还能有效提升品牌的知名度和用户黏性。然而&#xff0c;想要充分利用这一营销工具&#xff0c;关键在于如何高效地追踪广告数…

堆的 shift down

堆的 shift down 堆(Heap)是一种特殊的完全二叉树,它通常用于实现优先队列。在堆中,每个节点的值都大于或等于(在最大堆中)或小于或等于(在最小堆中)其子节点的值。堆的操作包括插入元素(shift up)和删除元素(shift down 或 bubble down)。 本文将重点介绍堆的 s…

HDFS EC文件损坏恢复方法

HDFS EC低版本存在许多bug&#xff0c;导致文件损坏&#xff0c;这些bug是在一定的条件下才有机率性的错误重构。 我们当前版本是3.1.1&#xff0c;使用前已修复部署EC patch了&#xff0c;但还是损坏了文件&#xff0c;而且这些文件是无任何提示异常的。是在进行读数据的时候…

从0开始学习pyspark--pyspark的启动模式[第1节]

PySpark是Apache Spark的Python API&#xff0c;它能够在分布式计算环境中处理大规模数据。PySpark可以在几种不同的模式下运行&#xff0c;主要包括以下三种&#xff1a; 本地模式&#xff08;Local Mode&#xff09;集群模式&#xff08;Cluster Mode&#xff09;客户端模式…

springboot中使用springboot cache

前言&#xff1a;SpringBoot中使用Cache缓存可以提高对缓存的开发效率 此图片是SpringBootCache常用注解 Springboot Cache中常用注解 第一步&#xff1a;引入依赖 <!--缓存--><dependency><groupId>org.springframework.boot</groupId><artifactId…

使用ExpandableListView创建可扩展列表

使用ExpandableListView创建可扩展列表 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨如何使用Android中的ExpandableListView创建可扩展列…

【linux】gcc快速入门教程

目录 一.gcc简介 二.gcc常用命令 一.gcc简介 gcc 是GNU Compiler Collection&#xff08;GNU编译器套件&#xff09;。就是一个编译器。编译一个源文件的时候可以直接使用&#xff0c;但是源文件数量太多时&#xff0c;就很不方便&#xff0c;于是就出现了make 工具 二.gcc…

vue实现鼠标拖动元素把二级分组放入一级分组

拖动案例demo实现 <template><div><div class"group one-level"><divclass"group-item"v-for"(group, index) in groups":key"group.id"draggable"true"dragstart"dragStart(group, $event)"…

STM32第十一课:ADC采集光照

文章目录 需求一、ADC概要二、实现流程1.开时钟&#xff0c;分频&#xff0c;配IO2.配置ADC工作模式3.配置通道4.复位校准5.数值的获取 三、需求的实现总结 需求 通过ADC转换实现光照亮度的数字化测量&#xff0c;最后将实时测量的结果打印在串口上。 一、ADC概要 ADC全称是A…

【面试系列】Python 高频面试题

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…

手机数据恢复篇:如何在Android手机上查找和恢复已删除的文件

移动设备中的回收站已成为 Android 用户的一项基本功能&#xff0c;它提供了防止意外删除的安全网。与计算机一样&#xff0c;移动回收站会临时存储已删除的文件&#xff0c;允许用户在需要时检索它们。此功能在当今的数字时代特别有用&#xff0c;因为只需轻轻一按&#xff0c…

SEO与AI的结合:如何用ChatGPT生成符合搜索引擎优化的内容

在当今数字时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已成为每个网站和内容创作者都必须掌握的一项技能。SEO的主要目标是通过优化内容&#xff0c;使其在搜索引擎结果页面&#xff08;SERP&#xff09;中排名更高&#xff0c;从而吸引更多的流量。然而&#xf…

使用 AutoGen 的 AI 智能体设计模式

1.Auto Gen框架 在Auto中,每种智能体分别扮演不同的角色。 ConversableAgent 作为最高级别的智能体抽象,为所有具体智能体提供了基础的通信能力。这包括发送和接收信息的能力,以及基于这些信息进行内部状态更新的能力。所有从这个类派生的智能体都继承了这些基本功能…

硬件实用技巧:刚挠板pcb是什么

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140060334 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

elasticsearch导出和导入数据

这里我使用的是离线操作的方式&#xff0c; 前提&#xff1a;安装了node, 安装elasticdump命令&#xff1a; npm install elasticdump -g 安装成功后进入elasticdump所在的目录&#xff1a; cd /usr/local/nodejs/lib/node_modules/elasticdump/bin 导出目标索引的映射结构…

Helm部署高可用redis k8s分片集群

安装部署 添加bitnami仓库并查找redis helm repo add bitnami https://charts.bitnami.com/bitnami ​ helm repo update [kmning@k8s-register-node ~]$ helm search repo redis NAME CHART VERSION APP VERSION DESCRIPTION bitnami/redis …