最近写vue3项目页面,发现页面加载完成后绑定给子组件需要点击确定按钮触发的方法直接执行了,没有任何操作直接就执行了
//父组件
<template>
<div>
<child-select @select="childSelect" />
</div>
</template>
<script setup lang="ts">
import ChildSelect from './child-select.vue'
const childSelect = (e) => {
console.log(e, "子组件传参")
}
</script>
//子组件
<template>
<div>
<button @click="submit">确定按钮</button>
</div>
</template>
<script setup lang="ts">
const emits = defineEmits(["select"])
const submit = () => {
emits("select", "子组件传给父组件的参数")
}
</script>
如上,发现页面加载完成,父组件的方法也执行了,控制台打印了内容,虽然打印的内容不是子组件传过来的参数
造成直接执行的罪魁祸首就是方法名称childSelect与子组件名称一样,<child-select />,
解决方法就是将方法名改一下就可以了
如:const selectChild = () => {}