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

Vue3 emit和provide

emit

选项式api,不是组合式 emit

<!-- ParentComponent.vue -->
<template><ChildComponent @custom-event="handleChildEvent" />
</template><script>
export default {methods: {handleChildEvent(data) {console.log("父组件收到子组件的事件:", data);},},
};
</script>
<!-- ChildComponent.vue -->
<script>
export default {methods: {triggerEvent() {this.$emit("custom-event", { message: "Hello from child!" });},},
};
</script>

传递复杂数据类型

<!-- ChildComponent.vue -->
methods: {sendData() {const payload = {id: 123,details: ["detail1", "detail2"],};this.$emit("data-sent", payload);},
},
//父组件可通过解构参数直接使用数据
handleDataSent({ id, details }) {console.log("ID:", id);        // 输出 123console.log("Details:", details); // 输出数组
}

组合式Api

<!--子组件-->
<script setup>
</script>
<template><div><h2>子组件</h2><button @click="$emit('nozht')">通知父组件</button></div>
</template>
<script setup>
import index from './components/index.vue';
const handleEvent = () => {alert('获得子组件事件');
};
</script>
<template>
//  v-on 指令 引用名称=执行事件<index v-on:nozht="handleEvent"  />
</template>

Provide/Inject

<!-- 父组件 -->
<script setup>
import { ref,provide } from 'vue';
import zht1 from './components/zht1.vue';
provide('mesg', 'Provide/Inject 中的信息内容');
</script>
<template><h1>父组件</h1><zht1 />
</template>
<script setup>
import zht2 from './zht2.vue';
</script>
<template><h1>子组件</h1><zht2 />
</template>
<script setup>
import { inject } from 'vue';
const mesg = defineProps(['mesg']);
const mesg2 = inject('mesg');
</script>
<template><h1>孙组件</h1><p>{{ mesg }}</p><p>{{ mesg2 }}</p>
</template>

子组件中更新父组件参数值

<script setup>
import { ref,provide } from 'vue';
import zht1 from './components/zht1.vue';
provide('mesg', 'Provide/Inject 中的信息内容');
const count = ref(0);//累加函数
const addCount = () => {count.value++;
};
provide('count', count);
provide('addCount', addCount);//装入函数
</script>
<template><h1>父组件</h1><zht1 />
</template>

zht2.vue

<script setup>
import { inject } from 'vue';
const mesg = inject('mesg');
const count = inject('count');
const addCount = inject('addCount');
</script>
<template><h1>孙组件</h1><p>{{ mesg }}</p><p>Count:{{ count }}</p><button @click="addCount">Count累加+1</button>
</template>

传递对象

<script setup>
import { ref,provide } from 'vue';
import zht1 from './components/zht1.vue';
provide('mesg', 'Provide/Inject 中的信息内容');
const count = ref(0);
const addCount = () => {count.value++;
};//传递对象
provide('count', {count,addCount,
});
</script>
<template><h1>父组件</h1><zht1 />
</template>
//在zht2.vue组件中,我们使用inject接收count的对象,使用解构函数提取count和addCount的引用。
<script setup>
import { inject } from 'vue';
const mesg = inject('mesg');
const { count, addCount } = inject('count');
</script>
<template><h1>孙组件</h1><p>{{ mesg }}</p><p>Count:{{ count }}</p><button @click="addCount">Count累加+1</button>
</template>


文章转载自:

http://KAbgoV8m.mqfkd.cn
http://KqsHt211.mqfkd.cn
http://k8RHYMDe.mqfkd.cn
http://OZzcuolR.mqfkd.cn
http://1RDIodd7.mqfkd.cn
http://JaQbKzQ5.mqfkd.cn
http://JRAlG5Nv.mqfkd.cn
http://lESmNT8B.mqfkd.cn
http://wVpJ8XhN.mqfkd.cn
http://J0MYTz5z.mqfkd.cn
http://XztyGqJN.mqfkd.cn
http://WKencFr7.mqfkd.cn
http://OP6KA6dd.mqfkd.cn
http://7TmAFnyR.mqfkd.cn
http://Cuehs1QZ.mqfkd.cn
http://xNCd6Cik.mqfkd.cn
http://i3Kpre5G.mqfkd.cn
http://PJdmI7BA.mqfkd.cn
http://WZ5TT1gS.mqfkd.cn
http://kY8ZsBYl.mqfkd.cn
http://WyrSZuUY.mqfkd.cn
http://99cZDbwU.mqfkd.cn
http://oYW4wls0.mqfkd.cn
http://3wyZY274.mqfkd.cn
http://R3iJ5W5Y.mqfkd.cn
http://P1Pk3dBv.mqfkd.cn
http://j1Pxo4og.mqfkd.cn
http://tezc6aAy.mqfkd.cn
http://Fc4y9zIU.mqfkd.cn
http://NEpzxE6J.mqfkd.cn
http://www.dtcms.com/a/386792.html

相关文章:

  • linux C 语言开发 (十二) 进程间通讯--消息队列
  • 报考湖北安全员A证需要哪些条件?
  • olap和oltp类业务
  • 14个免费的DEM数据源
  • 单时段机组组合优化的粒子群算法实现(MATLAB)
  • MATLAB实现语音去混响与去噪
  • 启发式搜索--模拟退火算法 matlab
  • 论文阅读:arixv 2025 One Token to Fool LLM-as-a-Judge
  • 【C++入门】C++基础
  • 10 正则表达式
  • 本地文件->RTSP->HLS->网页播放
  • 148.排序链表,23.合并K个升序链表
  • 思特威CMOS sensor rbrow寄存器设置需要注意的事项(二)
  • 物联网精准节能平台:工厂“数字大脑”如何让节能更智能?
  • Java进阶教程,全面剖析Java多线程编程,实现Callable接口实现多线程,笔记05
  • Windows Server Web 服务器安全防护(开放 HTTP端口,限制恶意 IP)
  • 深度学习:从预备知识到未来展望
  • 数据库(五)MySQL的数据备份
  • linux的tar命令详细使用
  • 德克西尔断链保护器:守护工业生产的“安全屏障”
  • 自动化脚本的核心引擎
  • 【LeetCode 每日一题】3025. 人员站位的方案数 I——(解法一)暴力枚举
  • α-β-γ 滤波器推导(例 1:均值滤波的递推形式)
  • el-upload上传文件自定义
  • 只有select权限,确实也可以for update锁表
  • HBase核心知识点总结
  • Springboot 使用缓存cache
  • 基于边缘计算的智能管控终端充电站有序充电系统设计与实现 —— 面向实时功率调度需求
  • Nordic BLE智能门锁应用
  • IDEA 连接MySQL数据导出和导入指南