Vue3子组件向父组件传值
时间: 2023-05-26 11:06:47 浏览: 169
Vue父子组件传值的一些坑
在Vue3中,子组件向父组件传值的方式与Vue2类似,可以通过自定义事件实现。不同的是,在Vue3中需要使用 `emits` 来声明组件的自定义事件。
在子组件中,可以使用 `this.$emit()` 方法触发自定义事件,并将需要传递的数据作为参数传递给父组件。
示例代码:
```html
<!-- 父组件 -->
<template>
<div>
<child-component @custom-event="handleEvent"></child-component>
<p>接收到的数据:{{receivedData}}</p>
</div>
</template>
<script>
import ChildComponent from './ChildComponent.vue'
export default {
components: {
ChildComponent
},
data() {
return {
receivedData: ''
}
},
methods: {
handleEvent(data) {
this.receivedData = data
}
}
}
</script>
<!-- 子组件 -->
<template>
<button @click="sendData">发送数据到父组件</button>
</template>
<script>
export default {
emits: ['custom-event'],
methods: {
sendData() {
const data = 'Hello, parent!'
this.$emit('custom-event', data)
}
}
}
</script>
```
在上面的示例中,子组件通过 `this.$emit('custom-event', data)` 方法触发自定义事件 `custom-event` ,并将 `data` 参数传递给父组件。父组件通过在子组件上监听 `@custom-event` 事件,来获取子组件传递的数据。
注意:在Vue3中,必须在组件选项中使用 `emits` 声明组件的所有自定义事件,才能确保类型检查的正确性。如果不声明,会出现编译警告。
阅读全文