当前位置: 首页 > news >正文

setup 函数的第二个参数 context 中包含 emit 方法

在生产环境中,只声明 props 的名称是不够的。为了让组件更健壮,你需要为 props 指定类型、默认值甚至自定义验证函数。

props: {
// 基础类型检查
title: String,

// 必填项
price: {type: Number,required: true
},
http://www.baidu.com/link?url=UK9M1kYPo9nuMx1XaXo4eSngXtmNqc6y19LbKAnD_hBUHfvpc9EzrR5yzqyjJJbKRV8LOHFunrx_607wHRPVtK
// 带有默认值的对象
// 注意:对象或数组的默认值必须从一个工厂函数返回
config: {type: Object,default(rawProps) {return { theme: 'dark' }}
},// 自定义验证函数
status: {type: String,validator(value) {// 这个值必须匹配下列字符串中的一个return ['success', 'warning', 'danger'].includes(value)}
}

}

2.3 命名规范

在 JavaScript 中:使用 camelCase (驼峰命名法),例如 props.productName。

在 HTML 模板中:使用 kebab-case (短横线命名法),例如 。
Vue 会自动处理这两者之间的转换。

  1. Emit:子传父 (Events Up)

既然子组件不能修改 props,那它想改变数据怎么办?(比如用户点击了子组件里的“删除”按钮)。
它必须通知父组件,请求父组件来执行修改。

3.1 触发与监听

触发:子组件使用 $emit('event-name', payload) 抛出一个事件。payload 是可选的参数,用于传递具体的数据。

监听:父组件像监听原生 DOM 事件(如 click)一样,使用 @event-name="handler" 监听这个自定义事件。

3.2 声明 Emits (Vue 3 推荐)

为了让组件的行为更清晰,Vue 3 建议我们在组件中显式声明它会抛出哪些事件。这不仅有助于文档化,还能让 Vue 自动校验事件。

// 声明该组件会触发的事件
emits: ['add-to-cart', 'delete-item'],
// 或者对象语法进行验证
emits: {
'add-to-cart': (id) => {
if (id) return true; // 验证通过
console.warn('add-to-cart 事件缺少 id 参数');
return false;
}
}

  1. 实战案例:购物车计数器

我们将构建一个简单的父子组件系统,演示完整的交互流程。

父组件 (App):维护一个商品列表和总价。它是数据的“单一事实来源”。

子组件 (ProductItem):展示单个商品,并包含“加入购物车”按钮。它只负责展示和通知。

我们将代码逻辑拆解为三个部分:

4.1 子组件逻辑 (ProductItem)

子组件负责声明它需要什么数据 (props),验证这些数据,并在用户交互时发送通知 (emit)。

const ProductItem = {
// 1. 严格的 Props 声明
props: {
id: {
type: Number,
required: true
},
name: {
type: String,
required: true
},
price: {
type: Number,
required: true
}
},
// 2. 声明抛出的事件
emits: ['add-to-cart'],

// setup 函数的第二个参数 context 中包含 emit 方法
setup(props, { emit }) {const notifyParent = () => {// 核心:子组件不直接修改数据,而是发出通知// 我们把商品的 id 和 price 打包发给父组件
        // 这里的 { id: ..., price: ... } 就是 payload
 

 

https://weibo.com/ttarticle/p/show?id=2309405298500333600775
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298500333600775
https://weibo.com/ttarticle/p/show?id=2309405298500442390572
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298500442390572
https://weibo.com/ttarticle/p/show?id=2309405298500555636828
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298500555636828
https://weibo.com/ttarticle/p/show?id=2309405298500664950834
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298500664950834
https://weibo.com/ttarticle/p/show?id=2309405298500929192005
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298500929192005
https://weibo.com/ttarticle/p/show?id=2309405298501055021161
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298501055021161
https://weibo.com/ttarticle/p/show?id=2309405298501168267409
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298501168267409
https://weibo.com/ttarticle/p/show?id=2309405298501277057036
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298501277057036
https://weibo.com/ttarticle/p/show?id=2309405298501394497657
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298501394497657
https://weibo.com/ttarticle/p/show?id=2309405298501503811663
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298501503811663
https://weibo.com/ttarticle/p/show?id=2309405298501608669207
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298501608669207
https://weibo.com/ttarticle/p/show?id=2309405298501717459093
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298501717459093
https://weibo.com/ttarticle/p/show?id=2309405298501847744591
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298501847744591
https://weibo.com/ttarticle/p/show?id=2309405298501952339987
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298501952339987
https://weibo.com/ttarticle/p/show?id=2309405298502053265485
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298502053265485
https://weibo.com/ttarticle/p/show?id=2309405298502157860916
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298502157860916
https://weibo.com/ttarticle/p/show?id=2309405298502292340985
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298502292340985
https://weibo.com/ttarticle/p/show?id=2309405298502413713458
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298502413713458
https://weibo.com/ttarticle/p/show?id=2309405298502518833307
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298502518833307
https://weibo.com/ttarticle/p/show?id=2309405298502623690821
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298502623690821
https://weibo.com/ttarticle/p/show?id=2309405298502749519901
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298502749519901
https://weibo.com/ttarticle/p/show?id=2309405298502854377589
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298502854377589
https://weibo.com/ttarticle/p/show?id=2309405298502958972935
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298502958972935
https://weibo.com/ttarticle/p/show?id=2309405298503064092736
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298503064092736
https://weibo.com/ttarticle/p/show?id=2309405298503206699091
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298503206699091
https://weibo.com/ttarticle/p/show?id=2309405298503315488838
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298503315488838
https://weibo.com/ttarticle/p/show?id=2309405298503428997207
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298503428997207
https://weibo.com/ttarticle/p/show?id=2309405298503647101006
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298503647101006
https://weibo.com/ttarticle/p/show?id=2309405298503772667989
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298503772667989
https://weibo.com/ttarticle/p/show?id=2309405298503881719885
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298503881719885
https://weibo.com/ttarticle/p/show?id=2309405298503994966035
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298503994966035
https://weibo.com/ttarticle/p/show?id=2309405298504112668687
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298504112668687
https://weibo.com/ttarticle/p/show?id=2309405298504238497944
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298504238497944
https://weibo.com/ttarticle/p/show?id=2309405298494776148173
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298494776148173
https://weibo.com/ttarticle/p/show?id=2309405298494809702629
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298494809702629
https://weibo.com/ttarticle/p/show?id=2309405298494897520705
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298494897520705
https://weibo.com/ttarticle/p/show?id=2309405298494901977261
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298494901977261
https://weibo.com/ttarticle/p/show?id=2309405298494943920139
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298494943920139
https://weibo.com/ttarticle/p/show?id=2309405298494952308961
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298494952308961
https://weibo.com/ttarticle/p/show?id=2309405298495073943732
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298495073943732
https://weibo.com/ttarticle/p/show?id=2309405298495086264357
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298495086264357
https://weibo.com/ttarticle/p/show?id=2309405298495237259281
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298495237259281
https://weibo.com/ttarticle/p/show?id=2309405298495270813842
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298495270813842
https://weibo.com/ttarticle/p/show?id=2309405298495388254241
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298495388254241
https://weibo.com/ttarticle/p/show?id=2309405298495434653749
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298495434653749
https://weibo.com/ttarticle/p/show?id=2309405298495497568639
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298495497568639
https://weibo.com/ttarticle/p/show?id=2309405298495560220793
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298495560220793
https://weibo.com/ttarticle/p/show?id=2309405298495594037376
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298495594037376
https://weibo.com/ttarticle/p/show?id=2309405298495732187179
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298495732187179
https://weibo.com/ttarticle/p/show?id=2309405298495753158717
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298495753158717
https://weibo.com/ttarticle/p/show?id=2309405298495908610119
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298495908610119
https://weibo.com/ttarticle/p/show?id=2309405298495908610183
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298495908610183
https://weibo.com/ttarticle/p/show?id=2309405298496084770994
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496084770994
https://weibo.com/ttarticle/p/show?id=2309405298496126451721
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496126451721
https://weibo.com/ttarticle/p/show?id=2309405298496147423248
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496147423248
https://weibo.com/ttarticle/p/show?id=2309405298496248086605
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496248086605
https://weibo.com/ttarticle/p/show?id=2309405298496290029574
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496290029574
https://weibo.com/ttarticle/p/show?id=2309405298496382304285
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496382304285
https://weibo.com/ttarticle/p/show?id=2309405298496420315355
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496420315355
https://weibo.com/ttarticle/p/show?id=2309405298496453607452
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496453607452
https://weibo.com/ttarticle/p/show?id=2309405298496541949969
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496541949969
https://weibo.com/ttarticle/p/show?id=2309405298496550338591
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496550338591
https://weibo.com/ttarticle/p/show?id=2309405298496629768280
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496629768280
https://weibo.com/ttarticle/p/show?id=2309405298496692682845
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496692682845
https://weibo.com/ttarticle/p/show?id=2309405298496701071383
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496701071383
https://weibo.com/ttarticle/p/show?id=2309405298496730431595
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496730431595
https://weibo.com/ttarticle/p/show?id=2309405298496810123335
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496810123335
https://weibo.com/ttarticle/p/show?id=2309405298496835551480
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496835551480
https://weibo.com/ttarticle/p/show?id=2309405298496877232230
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496877232230
https://weibo.com/ttarticle/p/show?id=2309405298496977895518
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496977895518
https://weibo.com/ttarticle/p/show?id=2309405298496982089750
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298496982089750
https://weibo.com/ttarticle/p/show?id=2309405298497053655073
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497053655073
https://weibo.com/ttarticle/p/show?id=2309405298497141473316
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497141473316
https://weibo.com/ttarticle/p/show?id=2309405298497141473344
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497141473344
https://weibo.com/ttarticle/p/show?id=2309405298497158512795
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497158512795
https://weibo.com/ttarticle/p/show?id=2309405298497284341797
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497284341797
https://weibo.com/ttarticle/p/show?id=2309405298497305313349
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497305313349
https://weibo.com/ttarticle/p/show?id=2309405298497338867956
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497338867956
https://weibo.com/ttarticle/p/show?id=2309405298497426685970
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497426685970
https://weibo.com/ttarticle/p/show?id=2309405298497464697020
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497464697020
https://weibo.com/ttarticle/p/show?id=2309405298497523417112
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497523417112
https://weibo.com/ttarticle/p/show?id=2309405298497569554485
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497569554485
https://weibo.com/ttarticle/p/show?id=2309405298497632206900
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497632206900
https://weibo.com/ttarticle/p/show?id=2309405298497686995179
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497686995179
https://weibo.com/ttarticle/p/show?id=2309405298497707966721
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497707966721
https://weibo.com/ttarticle/p/show?id=2309405298497850573040
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497850573040
https://weibo.com/ttarticle/p/show?id=2309405298497959362626
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497959362626
https://weibo.com/ttarticle/p/show?id=2309405298497993179232
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298497993179232
https://weibo.com/ttarticle/p/show?id=2309405298498064482361
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298498064482361
https://weibo.com/ttarticle/p/show?id=2309405298498131591424
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298498131591424
https://weibo.com/ttarticle/p/show?id=2309405298498135785560
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298498135785560
https://weibo.com/ttarticle/p/show?id=2309405298498265546774
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298498265546774
https://weibo.com/ttarticle/p/show?id=2309405298498278129714
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298498278129714
https://weibo.com/ttarticle/p/show?id=2309405298498290712687
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298498290712687
https://weibo.com/ttarticle/p/show?id=2309405298498420998159
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298498420998159
https://weibo.com/ttarticle/p/show?id=2309405298498429124748
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298498429124748
https://weibo.com/ttarticle/p/show?id=2309405298498559410527
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298498559410527
https://weibo.com/ttarticle/p/show?id=2309405298498660073591
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298498660073591
https://weibo.com/ttarticle/p/show?id=2309405298498701754565
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298498701754565
https://weibo.com/ttarticle/p/show?id=2309405298498840428719
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298498840428719
https://weibo.com/ttarticle/p/show?id=2309405298498844622941
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298498844622941
https://weibo.com/ttarticle/p/show?id=2309405298498986967072
https://weibo.com/ttarticle/p/show?comment=1&id=2309405298498986967072

http://www.jsqmd.com/news/816193/

相关文章:

  • 别再死记硬背了!用‘词根家族记忆法’搞定英语单词(以pland/plen/ply等为例)
  • Unity机械臂抓取避坑指南:从OnTriggerEnter到姿态自动计算的完整流程
  • UML建模从入门到精通:9种常用图+绘图工具+课程设计完整实例
  • 国产多模态大模型MOSS全解析:从原理到产业未来
  • 深入FTU硬件:从双CPU架构到保护算法,看二次融合终端如何实现40ms级故障隔离
  • LangChain新手必看的10个常见错误及解决方案(建议收藏)
  • DeepSeek毒性误杀率飙升的终极元凶:token-level attention坍缩现象实证(附Jupyter可交互诊断Notebook)
  • 紫光Pango设计流程文件全解析:.vm、.sdc、.pcf都是干嘛用的?
  • GSE智能宏编辑器:魔兽世界技能管理的革命性解决方案
  • 清洁技术十年演进:从功率半导体到系统级能源管理的工程实践
  • 3秒预览Office文档:QuickLook OfficeViewer插件终极指南
  • 为AI智能体构建持久记忆层:基于Telegram的RAG系统架构与实战
  • 八大网盘直链解析完全指南:一键获取真实下载地址的终极解决方案
  • Speechless:如何用免费Chrome插件永久备份你的微博记忆
  • 三电平SVPWM逆变器仿真指南
  • 工程师创业17年:自举、模拟IP与卖身抉择
  • 深入解析MAX 10 FPGA:从非易失架构到工业应用实战
  • 从原理到实战:HEC-RAS一维、二维及耦合建模全流程解析
  • VirtualMonitor虚拟显示器:三步打造你的专业级多屏工作空间
  • 2026年北京地区百达翡丽售后服务网络优化升级(最新电话及地址) - 亨得利官方服务中心
  • 有源滤波MPPT光伏并网逆变器设计【附程序】
  • 2026年5月金华车主如何甄别靠谱的太阳膜/360航空软包脚垫/全包脚垫/压模脚垫/隐形车衣门店? - 2026年企业推荐榜
  • 从阻车钉到GPS追踪器:技术如何革新警用车辆追捕安全
  • 抖音无水印视频下载终极解决方案:douyin-downloader技术深度解析与完整实践指南
  • AI建站工具避坑指南:10个最常见问题与真实解答
  • 在Windows 11/VMware里搭个‘古董’冰河木马实验环境:聊聊二十年前的攻击技术与现代EDR的差距
  • 数字时代阅读推广的创新实践:品牌100工程的启示
  • NsEmuTools:3步搞定NS模拟器安装配置的终极免费工具
  • FPGA工程师的模拟信号入门:手把手教你用XADC IP核读取外部传感器(从原理图到仿真)
  • 南京买狗买猫去哪里靠谱!南京人气口碑犬舍猫舍宠物店排行榜来啦 - 速递信息