【vue3】子传父-事件总线-mitt(子组件派发事件,父组件接收事件和传递的参数)

news/2024/7/5 2:16:10

安装库:cnpm install mitt

封装 eventbus.ts:

src->utils->eventbus.ts

//eventbus.ts

import mitt from 'mitt'

const emitter = mitt()

export default emitter

使用

B2.vue:

//B2.vue
<template>
    <div class="aa">
        <p>子组件B</p>
        <input v-model="info.name"><br>
        <input v-model="info.age"><br>
        <el-button type="primary" @click="emitB">派发一个事件</el-button>
    </div>
</template>

<script setup lang='ts'>
import { ref } from 'vue'
import emitter from '../utils/eventbus';

type tinfo = {
    name: string,
    age: number
}
const info = ref<tinfo>({ name: 'yyx', age: 12 })

const emitB = () => {
    emitter.emit('on-click', info.value)
}

</script>
<style scoped lang='scss'>
div {
    width: 400px;
    min-height: 300px;
    text-align: center;
    border: 1px solid #ccc;
    position: relative;
}
</style>


parent.vue:


//parent.vue
<template>
    <div>
        <p>这是父级</p>
        <span>==================================</span>

        <B2></B2>
        <C2 :info="_info"></C2>
    </div>
</template>

<script setup lang='ts'>
import { ref } from 'vue'
import emitter from '../utils/eventbus';
import B2 from '../components/B2.vue';
import C2 from '../components/C2.vue';

let _info = ref<unknown>(null)

emitter.on('on-click',(val)=>{
    _info.value = val
})


</script>
<style scoped lang='scss'></style>

C2.vue:


//C2.vue
<template>
    <div>组件3333333

        <p>name:{{ props?.info?.name }}</p>
        <p>age:{{ props?.info?.age }}</p>
    </div>
</template>

<script setup lang='ts'>


type tprops = {
    info?: any //有个问号?,是可选的参数,父组件在饮用的时候,可以不传
}
const props = withDefaults(defineProps<tprops>(), {
    info:{
        name:'张三',
        age:20
    }
})

</script>

<style scoped lang='scss'>
div {
    width: 400px;
    min-height: 300px;
    text-align: center;
    border: 1px solid #ccc;
}
</style>


http://lihuaxi.xjx100.cn/news/1723458.html

相关文章

跨境商城开发秘籍揭密:如何选择最适合你的技术方案?

在全球化的商业环境下&#xff0c;跨境电商正蓬勃发展&#xff0c;成为许多企业拓展国际市场的首选方式。而跨境商城开发作为实现这一目标的关键&#xff0c;选择合适的技术方案显得尤为重要。本文将揭示跨境商城开发的秘籍&#xff0c;为您提供权威的指导&#xff0c;助力您选…

解决:谷歌浏览器访问http时,自动转https访问的问题

问题背景&#xff1a;某个系统网站&#xff0c;之前一直用https域名访问&#xff0c;现在改成http域名后&#xff0c;用http访问&#xff0c;谷歌浏览器会自动跳转到https。 解决方法&#xff1a; 在浏览器中输入网址&#xff1a;chrome://net-internals/#hsts -》 在“Delete…

Google单元测试sample分析(一)

本文开始从googletest提供的sample案例分析如何使用单元测试&#xff0c; 代码路径在googletest/googletest/samples/sample1.unittest.cc 本文件主要介绍EXPECT*相关宏使用 EXPECT_EQ 判断是否相等 EXPECT_TRUE 是否为True EXPECT_FALSE 是否为False TEST(FactorialTest, N…

媒介易发稿教程,在人民网投稿的指南与技巧

在当今信息快速传播的时代&#xff0c;网络媒体成为了人们获取信息、表达观点的重要平台。而在这个庞大信息海洋中&#xff0c;人民网作为中国最具影响力的新闻网站之一&#xff0c;扮演着引领舆论、传播价值观念的重要角色。无论是个人经历、社会观察&#xff0c;还是学术研究…

酒店宾馆在线订房小程序源码系统:轻松预订 出行无忧 带完整搭建教程

大家好啊&#xff0c;罗峰来给大家推荐一款酒店宾馆在线订房小程序源码系统&#xff0c;随着互联网技术的发展和普及&#xff0c;越来越多的人选择在线预订酒店宾馆。为了满足这一需求&#xff0c;各大酒店订房APP或是小程序层出不穷&#xff0c;而搭建一个酒店宾馆在线订房小程…

Pico Neo4、Neo3开发手柄的使用交互监听

using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.XR;public class InputEvent : MonoSingleton<InputEvent> {//*************输入设别**************************InputDevice leftHandController;Inp…

颈肩肌筋膜炎做什么检查

颈肩肌筋膜炎症状 颈肩背部广泛疼痛酸胀沉重感、麻木感&#xff0c;僵硬、活动受限&#xff0c;可向后头部及上臂放散。疼痛呈持续性&#xff0c;可因感染、疲劳、受凉、受潮等因素而加重。查体见颈部肌紧张&#xff0c;压痛点常在棘突及棘突旁斜方肌、菱形肌等&#xff0c;压…

掌握CSS Flexbox,打造完美响应式布局,适配各种设备!

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 基…