【Vue3】父子组件传值、方法调用

本文详述了Vue3中scriptsetup标签下的defineProps和defineEmits在组件间交互中的应用,包括定义和使用方法,以及其相对于传统导入方式的优势。

Talk is cheap, show me the code.

环境 | Environment

kversion
OSwindows 10
vue3.2.47
javascriptES5+

defineProps 和 defineEmits

definePropsdefineEmits 只能在<script setup>中使用的编译器宏。

它们不需要使用import导入,且会随着<script setup>的处理过程一同被编译掉。

在子组件中的基本使用方式如下:

<script setup>
const props = defineProps({
  msg: String
})

const emit = defineEmits(['load-data'])
</script>

子组件调用父组件的方法 defineEmit

父组件

<template>
	<div>
        <add-modal ref="addModal" @load-data="loadData" />
	</div>
</template>

<script setup>
function loadData() {
    // ...
}
</script>

子组件

<template>
    <div></div>
</template>

<script setup>
// 引入
const emit = defineEmits(['load-data'])

function handleClickSubmit() {
    validate().then(res => {
        addAPI(data).then(res => {
            if (res.success) {
                // 使用
                emit("load-data")
            }
        })
    }).catch(err => {
        console.error('error', err);
    });
}
</script>

参考 | References

优快云 - Vue3-子组件调用父组件的方法、父组件给子组件传值,defineEmits、defineProps

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值