Vue 3编写的父子组件示例,包括传递数据和调用父组件方法
下面是一个使用Vue 3编写的父子组件示例,包括传递数据和调用父组件方法:
ChildComponent.vue:
<template><div><p>Child Component</p><p>Message: {{ message }}</p><button @click="updateMessage">Update Message</button></div>
</template><script>
import { defineEmits, defineProps } from 'vue';export default {props: {initialMessage: {type: String,required: true}},emits: ['update:message'],setup(props, { emit }) {const message = defineProps({message: props.initialMessage});function updateMessage() {message.message = 'Hello Vue 3';emit('update:message', message.message);}return {message,updateMessage};}
}
</script>
在上面的代码中,我们定义了一个名为ChildComponent
的子组件,并声明了一个名为initialMessage
的props属性,它的类型为字符串,并且是必需的。我们还定义了一个名为update:message
的自定义事件,用于将更新后的消息传递回父组件。
在setup()
函数中,我们使用defineProps()
函数来创建一个响应式的message
对象,并将其初始值设置为props.initialMessage
。然后,我们定义了一个名为updateMessage()
的方法,在点击按钮时将message.message
更新为'Hello Vue 3'
,并通过调用emit()
函数来触发update:message
事件并将更新后的消息传递给父组件。
ParentComponent.vue:
<template><div><p>Parent Component</p><child-component :initial-message="message" @update:message="onUpdateMessage"></child-component><p>Updated Message: {{ updatedMessage }}</p></div>
</template><script>
import ChildComponent from './ChildComponent.vue';
import { ref } from 'vue';export default {components: {ChildComponent},setup() {const message = ref('Hello World');const updatedMessage = ref('');function onUpdateMessage(value) {updatedMessage.value = value;}return {message,updatedMessage,onUpdateMessage};}
}
</script>
在上面的代码中,我们定义了一个名为ParentComponent
的父组件,并在模板中使用了<child-component>
标签来引入子组件。我们将message
属性绑定到子组件的initial-message
属性上,并监听子组件触发的update:message
事件来获取更新后的消息。
在setup()
函数中,我们使用ref()
函数创建了两个响应式变量:message
和updatedMessage
。我们还定义了一个名为onUpdateMessage()
的方法,在子组件触发update:message
事件时被调用,用于将更新后的消息保存到updatedMessage
变量中。
这就是一个完整的父子组件示例,包括传递数据和调用父组件方法。