Vue 3编写的父子组件示例,包括传递数据和调用父组件方法

下面是一个使用Vue 3编写的父子组件示例,包括传递数据和调用父组件方法:

ChildComponent.vue:

html 复制代码
<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:

html 复制代码
<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()函数创建了两个响应式变量:messageupdatedMessage。我们还定义了一个名为onUpdateMessage()的方法,在子组件触发update:message事件时被调用,用于将更新后的消息保存到updatedMessage变量中。

这就是一个完整的父子组件示例,包括传递数据和调用父组件方法。

相关推荐
benbenAItalk5 小时前
数字人口播视频的批量生产实践:素材规范、任务编排与质量验收
java·前端·音视频
2601_962885725 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
西瓜太郎12346 小时前
Claude Code、Codex CLI、Gemini CLI 能否共用一枚 Key?先看协议选择矩阵
前端·api 网关·claude code·gemini cli·codex cli
多加点辣也没关系6 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
陈随易7 小时前
在Finch用了62亿词元,我认为这是新一代Agent工具之神
前端·人工智能·后端
水域安全老周8 小时前
水趣钓鱼救生衣专利拆解:两级锁紧如何解决落水人衣分离
java·前端·网络
计算机魔术师8 小时前
Anthropic CEO突然喊踩刹车,OpenAI罕见力挺:AI这辆车不能只踩油门了
前端
wing989 小时前
从codex转战workbuddy使用一周的感受
前端·人工智能·后端
Highcharts.js9 小时前
常见报错排雷指南2:导出失败的官方解法
javascript·react.js·ecmascript·highcharts·可视化图表·导出模块失败·导出服务
EatFan9 小时前
Java接入支付宝 JSAPI 支付保姆教程(二):流程讲解与前后端代码讲解
前端·spring boot·后端·微信小程序·小程序·uni-app