vue3父子组件的传参方式

父到子

//父
  <son :sondata="sondata" ></son>
//子
import {defineProps} from 'vue';
const dataInfo= defineProps({
    sondata: {
        type: Array,
        default: () => {
            return []
        }
    }
})

子到父 (两种方式可以一起使用)

1.通过自定义方法的方式去传参

//子组件
import {  defineEmits } from 'vue';
const emitEvent = defineEmits(['sonclick'])

const someMethod = () => {
   emitEvent('sonclick', 123, 456)
}

//父组件
 <son-html @sonclick="tiemData" ></son-html>
 
 const tiemData = (a,b)=>{
 	console.log(a,b)
 }

2.自定义需要暴露出去的方法和参数

//子
//在 <script setup>内可以直接用 defineExpose

import { defineExpose } from 'vue';
defineExpose({
    getName: () => {
        return 'getName方法传参';
    },
    age:123
})

//父
  <son-html ref='son' ></son-html>
  const son = ref()
	onMounted(() => {
		 console.log(son.value?.['getName']())
		 console.log(son.value?.['age'])
	})

3.祖孙组件传值

//祖
  <script setup>
    import { provide } from "vue";
    import Father from "../components/FatherComponent.vue"
    let grandFather = reactive({
      message:"来自祖父组件传值"
    })
    provide('grandFather',grandFather)
    </script>

    <template>
      <Father></Father>
    </template>


//孙
<script setup >
    import { inject } from 'vue';
    const grandSon  = inject('grandFather',{})</script>
    <template>
        <div>
     		测试祖组件->孙组件传值消息:{{ grandSon.message }}
        </div>
    </template>
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值