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>
相关文章
|
JavaScript
JS绑定事件的三种方法(简单易懂)
JS绑定事件的三种方法(简单易懂)
|
SQL 关系型数据库 MySQL
docker上定期备份mysql数据库
本文是博主学习docker的记录,希望对大家有所帮助。
2052 0
|
11月前
|
监控 算法 图形学
《2D角色+3D场景:动漫游戏次元融合的技术突破路径》
本文围绕古风仙侠动漫游戏开发,聚焦2D手绘角色与3D场景的融合难题,针对图层割裂、阴影脱节、透视失真、光照不匹配、多角色性能压力及互动割裂六大问题,分别提出骨骼绑定控制器、动态阴影投射、非线性透视缩放、实时调色、分层渲染、互动姿态匹配六大解决方案。通过差异化参数设置与动态精度调整,在保证动漫风格的同时,解决技术痛点,提升场景沉浸感。
905 3
|
5月前
|
人工智能 前端开发 JavaScript
用 Playwright + Claude Code 做自动化测试:一套从0到1跑通的实战流程
本文分享校招生如何用AI(Claude Code+Playwright)高效落地自动化测试:从项目理解、精准提需、代码审查到CI集成,强调AI是“加速器”而非替代者。核心在于人把控测试设计与判断,AI提升编码效率,助你真正掌握AI赋能的测开能力。
|
Android开发
HBuilder X连接雷电模拟器(手机模拟器)
HBuilder X连接雷电模拟器(手机模拟器)
HBuilder X连接雷电模拟器(手机模拟器)
|
前端开发 JavaScript API
如何快速学习React?
如何快速学习React?
483 1
|
编解码 Prometheus 监控
完全解读Prometheus查询(下)
完全解读Prometheus查询(下)
1170 0
|
自然语言处理 JavaScript 前端开发
一文梳理JavaScript中常见的七大继承方案
该文章系统地概述了JavaScript中七种常见的继承模式,包括原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合继承等,并探讨了每种模式的实现方式及其优缺点。
一文梳理JavaScript中常见的七大继承方案
|
机器学习/深度学习 人工智能 自然语言处理
前端大模型入门(三):编码(Tokenizer)和嵌入(Embedding)解析 - llm的输入
本文介绍了大规模语言模型(LLM)中的两个核心概念:Tokenizer和Embedding。Tokenizer将文本转换为模型可处理的数字ID,而Embedding则将这些ID转化为能捕捉语义关系的稠密向量。文章通过具体示例和代码展示了两者的实现方法,帮助读者理解其基本原理和应用场景。
6108 1

热门文章

最新文章