defineProps和defineEmits

简介: 本文介绍了Vue 3中的`defineProps`和`defineEmits`函数的用法,其中`defineProps`用于声明组件的属性(props),以便从父组件接收数据,而`defineEmits`用于定义组件可以触发的自定义事件,从而实现子组件向父组件传递数据的功能。

defineProps

当在不同场景下,父组件控制子组件展示不同的样式,或者传递不同的数据,这个时候就需要使用到props,子组件通过props来接收父组件传递过来的数据。

场景复现:不同的页面中导航栏展示不同的颜色,这个时候就需要对导航栏组件使用props声明,如此父组件就可以完成对子组件的不同场景的不同定义。

props 声明的格式

  1. 简单声明单个值
// 当前组件声明一个name的属性
const props = defineProps(["name"])

// 父组件中使用
<DemoChild :name="fuName"></DemoChild>
const fuName = ref("zhangsan")
  1. 约定数据类型
const props = defineProps({
   
  name:String
})

// 父组件中使用方式和上面一致,
  1. 约定默认值
const props = defineProps({
   
  name:{
   
    type:String,
    default: 'lisi'
  }
})
  1. 声明多个Props
const props = defineProps({
   
  name:{
   
    type:String,
    default:'lisi'
  },
  address:{
   
    type:String,
    default:'xxx'
  }
  // ...
})
  1. 声明一个对象格式的Props
const props = defineProps({
   
  user:{
   
    type:Object,
    default:()=>({
   name:'lisi',address:'xxx'})
  }
})

defineEmits

defineEmits 是一个用于定义组件可以触发哪些自定义事件的函数。通过使用defineEmits可以完成子组件对父组件的传值。(上面的defineProps为父组件向子组件进行传值)

  • 子组件通过defineEmits来自定义事件,并通过emit('事件名','参数')的方式将值传递给父组件
  • 父组件通过 在子组件@自定义事件='处理函数'来获取子组件传递的值。

父组件

<template>
  <!-- 父组件自定义add事件 -->
  <xxx-child @add="handleAdd"></xxx-child>
</template>
<Script setup>
  import {ref} from 'vue'
  function handleAdd(e){
    consloe.log(e)
  }
</Script>

子组件

<template>
  <button @click="handleClick">子组件向父组件传值</button>
</template>
<Script setup>
  import {ref} from 'vue'
  // 子组件声明
  const emit = defineEmits(['add'])
  function handleClick(){
    emit('add',20)
  }
</Script>
相关文章
|
Docker 容器
x86 平台利用 qemu-user-static 实现 arm64 平台 docker 镜像的运行和构建
x86 平台利用 qemu-user-static 实现 arm64 平台 docker 镜像的运行和构建
3992 1
|
前端开发 应用服务中间件 Linux
使用Nginx搭建静态网站
使用Nginx搭建静态网站
3122 0
使用Nginx搭建静态网站
|
前端开发 小程序 API
uni-app 微信小程序中如何通过 canvas 画布实现电子签名?
uni-app 微信小程序中如何通过 canvas 画布实现电子签名?
uni-app 微信小程序中如何通过 canvas 画布实现电子签名?
|
监控 算法 图形学
《2D角色+3D场景:动漫游戏次元融合的技术突破路径》
本文围绕古风仙侠动漫游戏开发,聚焦2D手绘角色与3D场景的融合难题,针对图层割裂、阴影脱节、透视失真、光照不匹配、多角色性能压力及互动割裂六大问题,分别提出骨骼绑定控制器、动态阴影投射、非线性透视缩放、实时调色、分层渲染、互动姿态匹配六大解决方案。通过差异化参数设置与动态精度调整,在保证动漫风格的同时,解决技术痛点,提升场景沉浸感。
1003 3
|
6月前
|
人工智能 前端开发 JavaScript
用 Playwright + Claude Code 做自动化测试:一套从0到1跑通的实战流程
本文分享校招生如何用AI(Claude Code+Playwright)高效落地自动化测试:从项目理解、精准提需、代码审查到CI集成,强调AI是“加速器”而非替代者。核心在于人把控测试设计与判断,AI提升编码效率,助你真正掌握AI赋能的测开能力。
|
8月前
|
机器学习/深度学习 人工智能 编解码
阿里云GPU云服务器费用详解及价格分享:性能、场景与优惠价格参考
随着AI等领域发展,GPU云服务器市场需求大增。阿里云GPU云服务器支持月付和年付,适用于深度学习等多种高强度计算场景。其优势包括广泛地域覆盖、超凡计算性能、出色网络性能及灵活购买方式,可应用于直播视频转码、AI训练与推理等多个场景。阿里云GPU云服务器的收费标准因配置与付费方式的不同而有所差异,购买前应领取阿里云优惠券,可获一定金额减免。建议用户精准选择配置、利用优惠、合理规划资源,同时关注服务稳定性与数据安全。
|
9月前
|
存储 关系型数据库 数据库
Flask中定义类使用Sqlalchemy时,mapped_column详细讲解
本文详解 SQLAlchemy 2.0 中 `mapped_column` 的用法,介绍其语法结构、常用参数(如 `nullable`、`default`、`server_default`、`onupdate` 等),并通过 DIFY 的 Account 模型实例解析字段定义逻辑,对比数据库列与运行时字段的区别,帮助理解 ORM 映射机制。
787 3
|
Android开发
HBuilder X连接雷电模拟器(手机模拟器)
HBuilder X连接雷电模拟器(手机模拟器)
HBuilder X连接雷电模拟器(手机模拟器)

热门文章

最新文章