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>
相关文章
|
9月前
|
监控 算法 图形学
《2D角色+3D场景:动漫游戏次元融合的技术突破路径》
本文围绕古风仙侠动漫游戏开发,聚焦2D手绘角色与3D场景的融合难题,针对图层割裂、阴影脱节、透视失真、光照不匹配、多角色性能压力及互动割裂六大问题,分别提出骨骼绑定控制器、动态阴影投射、非线性透视缩放、实时调色、分层渲染、互动姿态匹配六大解决方案。通过差异化参数设置与动态精度调整,在保证动漫风格的同时,解决技术痛点,提升场景沉浸感。
791 3
|
3月前
|
人工智能 前端开发 JavaScript
用 Playwright + Claude Code 做自动化测试:一套从0到1跑通的实战流程
本文分享校招生如何用AI(Claude Code+Playwright)高效落地自动化测试:从项目理解、精准提需、代码审查到CI集成,强调AI是“加速器”而非替代者。核心在于人把控测试设计与判断,AI提升编码效率,助你真正掌握AI赋能的测开能力。
|
5月前
|
机器学习/深度学习 人工智能 编解码
阿里云GPU云服务器费用详解及价格分享:性能、场景与优惠价格参考
随着AI等领域发展,GPU云服务器市场需求大增。阿里云GPU云服务器支持月付和年付,适用于深度学习等多种高强度计算场景。其优势包括广泛地域覆盖、超凡计算性能、出色网络性能及灵活购买方式,可应用于直播视频转码、AI训练与推理等多个场景。阿里云GPU云服务器的收费标准因配置与付费方式的不同而有所差异,购买前应领取阿里云优惠券,可获一定金额减免。建议用户精准选择配置、利用优惠、合理规划资源,同时关注服务稳定性与数据安全。
|
6月前
|
存储 关系型数据库 数据库
Flask中定义类使用Sqlalchemy时,mapped_column详细讲解
本文详解 SQLAlchemy 2.0 中 `mapped_column` 的用法,介绍其语法结构、常用参数(如 `nullable`、`default`、`server_default`、`onupdate` 等),并通过 DIFY 的 Account 模型实例解析字段定义逻辑,对比数据库列与运行时字段的区别,帮助理解 ORM 映射机制。
622 3
|
安全 物联网 物联网安全
制定统一的物联网技术标准和规范的难点有哪些?
制定统一的物联网技术标准和规范的难点有哪些?
693 58
|
人工智能 算法 数据可视化
|
安全 API 调度
异步编程中常见的问题和处理方式
【6月更文挑战第23天】在python中`asyncio` 提供PriorityQueue和LifoQueue,用于不同检索策略。异步编程需注意任务调度、错误处理和资源管理,以提高响应性和避免阻塞。
951 7
异步编程中常见的问题和处理方式
|
缓存 JavaScript 前端开发
深入理解 Vue 3 的 Composition API 与新特性
本文详细探讨了 Vue 3 中的 Composition API,包括 setup 函数的使用、响应式数据管理(ref、reactive、toRefs 和 toRef)、侦听器(watch 和 watchEffect)以及计算属性(computed)。我们还介绍了自定义 Hooks 的创建与使用,分析了 Vue 2 与 Vue 3 在响应式系统上的重要区别,并概述了组件生命周期钩子、Fragments、Teleport 和 Suspense 等新特性。通过这些内容,读者将能更深入地理解 Vue 3 的设计理念及其在构建现代前端应用中的优势。
884 1
深入理解 Vue 3 的 Composition API 与新特性
|
JavaScript 前端开发 编译器
Vue3基础(26)___defineProps、defineEmits、defineExpose、defineModel组件通信、defineOptions
本文介绍了Vue 3中`<script setup>`语法糖的使用,以及如何在Vue 3的组合式API中使用`defineProps`、`defineEmits`、`defineExpose`和`defineModel`进行组件通信和属性暴露。同时,还解释了`defineOptions`的作用,它可以用来配置组件的选项,例如禁用属性的自动继承。
1990 2