vue3组合式子传父没有点击事件
时间: 2023-11-14 18:10:14 浏览: 108
Vue自定义事件(详解)
根据提供的引用内容,我理解您想了解如何在Vue3组合式API中将子组件的值传递给父组件,但是没有点击事件。在这种情况下,您可以使用Vue3的自定义事件来实现这一目标。具体步骤如下:
1. 在子组件中,使用`defineEmits`定义一个自定义事件,例如`update:sonValue`。
2. 在子组件中,使用`$emit`触发自定义事件,并将需要传递给父组件的值作为参数传递,例如`$emit('update:sonValue', sonValue.value)`。
3. 在父组件中,使用`v-on`监听子组件触发的自定义事件,并将传递过来的值保存到父组件的变量中,例如`<Son v-on:update:sonValue="value => sonValue = value"></Son>`。
下面是一个示例代码,演示了如何在Vue3中使用自定义事件将子组件的值传递给父组件:
子组件Son.vue:
```
<template>
<div>
<h1>这是子组件</h1>
<hr>
<el-row>
这是暴露给父组件的值: {{ sonValue }}
</el-row>
</div>
</template>
<script setup lang="ts">
import { ref, defineEmits } from 'vue';
const sonValue = ref('这是子组件的值');
defineEmits(['update:sonValue']);
function updateSonValue(newValue: string) {
sonValue.value = newValue;
// 触发自定义事件,将新的值传递给父组件
$emit('update:sonValue', newValue);
}
// 将需要暴露给父组件的值和函数添加到defineExpose中
defineExpose({
sonValue,
updateSonValue
});
</script>
<style scoped>
</style>
```
父组件Parent.vue:
```
<template>
<div>
<h1>这是父组件</h1>
<el-input v-model="value" placeholder="请输入内容,父组件输入框"></el-input>
<hr>
<el-row>
<Son v-on:update:sonValue="value => sonValue = value"></Son>
</el-row>
<hr>
<el-row>
父组件中的值:{{ sonValue }}
</el-row>
</div>
</template>
<script setup lang="ts">
import Son from './Son.vue';
import { ref } from 'vue';
const value = ref('这是父组件的初始value值');
const sonValue = ref('');
</script>
<style scoped>
</style>
```
阅读全文