vue3 父子组件通信、调用子组件方法

//一、父组件调用子组件
<script setup lang=ts>
let detailData = ref()
Api.editExecuteNo(params).then((res: any) => {
    detailData.value= res
  })

//2.调用子组件方法
const add = () {
   childComp.value.addNext
}
</script>
<template>
<DetailDocumentVue
        v-if="openDetail"
        ref="childComp"
        :dataform="detailData"
        :from="'slsh'"
        @finsh-zjh="finshZjh"
      />
</template>

//二、子组件
<script setup lang=ts>
//1、接收父组件的值
const props = defineProps({
  dataform: {
    type: Object,
    require: false
  },
  from: {
    type: String,
    require: false
  }
})
// const formAll = computed(() => props.formAll ) //改变传过来的值的时候使用
const formAll = toRef(props, 'dataform')//toRef 确保响应式可影响界面变化
const from= toRef(props, 'from')
watch(formAll, () => {                 //监听异步传值 确保响应式
  basicInformation.value = formAll.value?.basicInformation
},
  { immediate: true }
)

//2、发射给父组件的值
const emit = defineEmits(['finshZjh'])
//操作完成
emit('finshZjh')
//3、暴露自身的方法和属性给父组件
defineExpose({
  addNext,
})
const addNext = ()=>{

}
</script>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值