Vue3 组件通信方式

文章详细介绍了Vue3中实现组件间通信的各种方式,包括:通过expose和ref从父组件访问子组件的属性和方法;使用attrs传递非props属性;v-model的多值绑定;以及provide/inject的依赖注入。此外,还讨论了Vuex的状态管理以及在Vue3中使用mitt作为EventBus的替代方案进行跨组件通信。
摘要由CSDN通过智能技术生成

1. expose / ref

父组件获取子组件的属性或者调用子组件方法

// Child.vue
<script setup>
    // 方法一 不适用于Vue3.2版本,该版本 useContext()已废弃
    import {
    useContext } from "vue"
    const ctx = useContext()
    // 对外暴露属性方法等都可以
    ctx.expose({
   
        childName: "这是子组件的属性",
        someMethod(){
   
            console.log("这是子组件的方法")
        }
    })
    
    // 方法二 适用于Vue3.2版本, 不需要引入
    // import { defineExpose } from "vue"
    defineExpose({
   
        childName: "这是子组件的属性",
        someMethod(){
   
            console.log("这是子组件的方法")
        }
    })
</script>
 
// Parent.vue  注意 ref="comp"
<template>
    <child ref="comp"></child>
    <button @click="handlerClick">按钮</button>
</template>
<script setup>
    import child from "./child.vue"
    import {
    ref } from "vue"
    const comp = ref(null)
    const handlerClick = () => {
   
        console.log(comp.value.childName) // 获取子组件对外暴露的属性
        comp.value.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值