defineProps、defineEmits、definExpose的用法

1.功能介绍

  • defineprops:父组件向子组件传递参数
  • defineEmits:父组件向子组件传递函数
  • defineExpose:将子组件中的参数和方法暴露给父组件

2.实现过程

CompChild.vue代码:

<template>
  <p>子组件</p>
  <p>{{ props.count }}</p>
  <button @click="emit('func',65276527)">点击</button>
</template>

<script>
export default {
  name: "CompChild"
}
</script>

<script setup>
import {defineProps, defineEmits, defineExpose} from 'vue'

//接收父级传过来的参数
const props = defineProps(["count"]);
//接收父级传过来的方法
const emit = defineEmits(["func"]);

//定义一个参数暴露给父组件
const a = 123;
//定义一个方法暴露给子组件
const funca = () => {
  console.log("子组件中的方法");
}
//将参数a和函数funca暴露给父组件
defineExpose({
  a,
  funca
});
</script>

CompParent.vue代码:

<template>
  <p>父组件</p>
  // 在引用的时候直接向子组件传递参数和函数
  <CompChild ref="compRef" :count="count" @func="func"/>
</template>

<script>
export default {
  name: "CompParentProps"
}
</script>

<script setup>
import CompChild from "@/views/PropsAndEmits/CompChild";
import {onMounted, ref} from 'vue'

//定义一个参数和函数传递给子组件
const count = ref(123);
const func = (params) => {
  count.value = params
};

//定义一个参数compRe接收子组件中暴露的参数和函数
const compRef=ref(null);
//在onMounted函数中调用子组件中的参数和函数
onMounted(()=>{
  console.log(compRef.value.a);
  compRef.value.funca();
});
</script>

代码截图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值