vue3 setup 子传父方法
时间: 2023-09-26 14:10:21 浏览: 92
vue2与vue3的使用区别与组件通信
回答: 在Vue3中,子组件向父组件传递值的方法是使用`emit`函数。在子组件中,可以通过`defineEmits`函数创建一个名称,接受一个数组来定义要传递的事件。然后在子组件中,可以使用`emit`函数来触发该事件,并传递需要传递的值。例如,子组件中的代码可以是这样的:
```html
<template>
<button @click="clickChild">点击子组件</button>
</template>
<script setup>
import { defineEmits } from 'vue'
const emit = defineEmits(['clickChild'])
const clickChild = () => {
let param = { content: 'b' }
emit('clickChild', param)
}
</script>
<style>
</style>
```
而在父组件中,可以通过`@`符号来监听子组件触发的事件,并在父组件中定义相应的方法来接收传递的值。例如,父组件中的代码可以是这样的:
```html
<template>
<div class="hello">
我是父组件
<Child @clickChild="clickEven"></Child>
<p>子组件传递的值是 {{ result }}</p>
</div>
</template>
<script setup>
import Child from './Child'
import { ref } from 'vue'
const result = ref('')
const clickEven = (val) => {
console.log(val)
result.value = val.content
}
</script>
<style scoped>
</style>
```
这样,当子组件中的按钮被点击时,会触发`clickChild`事件,并将`param`对象作为参数传递给父组件的`clickEven`方法。父组件可以通过`result`变量来接收并使用子组件传递的值。
阅读全文