vue2.x中父组件通过props向子组件传递数据详细解读

news/2025/2/22 13:26:56
htmledit_views">

1. 父组件向子组件传递数据的步骤

  1. 在子组件中定义 props

    子组件通过 props 选项声明它期望接收的数据。props 可以是数组形式(简单声明)或对象形式(支持类型检查和默认值)。
  2. 在父组件中使用子组件时绑定 props

    父组件通过 v-bind(或简写为 :)将数据传递给子组件的 props
  3. 子组件使用接收到的数据

    子组件可以直接在模板或逻辑中使用 props 中的数据。

2. 示例代码

子组件 (ChildComponent.html" title=vue>vue)
<template>
  <div>
    <h3>子组件</h3>
    <p>接收到的消息:{{ message }}</p>
    <p>接收到的数字:{{ number }}</p>
  </div>
</template>

<script>
export default {
  // 定义 props
  props: {
    // 接收一个字符串类型的 message
    message: {
      type: String,
      required: true, // 必传
    },
    // 接收一个数字类型的 number,默认值为 0
    number: {
      type: Number,
      default: 0, // 默认值
    },
  },
};
</script>

<style scoped>
div {
  border: 1px solid #ccc;
  padding: 10px;
  margin: 10px;
}
</style>
父组件 (ParentComponent.html" title=vue>vue)
<template>
  <div>
    <h2>父组件</h2>
    <input v-model="parentMessage" placeholder="输入消息" />
    <input v-model.number="parentNumber" placeholder="输入数字" />
    <button @click="sendData">传递数据</button>

    <!-- 使用子组件并绑定 props -->
    <ChildComponent :message="parentMessage" :number="parentNumber" />
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.html" title=vue>vue';

export default {
  components: {
    ChildComponent, // 注册子组件
  },
  data() {
    return {
      parentMessage: 'Hello from Parent', // 父组件的数据
      parentNumber: 42, // 父组件的数据
    };
  },
  methods: {
    sendData() {
      alert('数据已传递给子组件');
    },
  },
};
</script>

<style scoped>
div {
  padding: 10px;
  border: 1px solid #000;
}
</style>

3. 代码解析

子组件 (ChildComponent.html" title=vue>vue)
  1. props 定义

    • message:接收一个字符串类型的数据,且是必传的(required: true)。

    • number:接收一个数字类型的数据,默认值为 0

  2. 模板中使用 props

    通过 {{ message }} 和 {{ number }} 显示父组件传递过来的数据。
父组件 (ParentComponent.html" title=vue>vue)
  1. 数据定义

    parentMessage 和 parentNumber 是父组件的数据,通过 v-model 绑定到输入框。
  2. 传递数据给子组件

    使用 v-bind(简写为 :)将父组件的数据绑定到子组件的 props
<ChildComponent :message="parentMessage" :number="parentNumber" />
  1. 动态更新数据

    当用户在输入框中修改数据时,parentMessage 和 parentNumber 会自动更新,并通过 props 传递给子组件。

4. 运行效果

  1. 父组件显示两个输入框和一个按钮。

  2. 用户在输入框中输入内容,点击按钮后,数据会传递给子组件。

  3. 子组件实时显示父组件传递过来的数据。

5. 注意事项

  1. props 单向数据流

    • 父组件向子组件传递数据是单向的,子组件不能直接修改 props 的值。

    • 如果子组件需要修改数据,可以通过 $emit 触发事件,通知父组件修改

  2. props 验证

    可以通过 typerequireddefault 等选项对 props 进行验证,确保数据的正确性。
  3. 动态 props

    使用 v-bind 动态绑定 props,可以实现父组件数据变化时,子组件自动更新。


http://www.niftyadmin.cn/n/5862325.html

相关文章

Brave132编译指南 MacOS篇 - 编译与运行(六)

1. 引言 经过前几篇文章的精心准备&#xff0c;我们已经成功初始化了Brave132浏览器的构建环境&#xff0c;现在&#xff0c;我们终于来到了激动人心的时刻&#xff1a;编译并运行Brave浏览器。本篇将详细介绍如何将之前准备好的源代码和依赖项转化为一个可以实际运行的Brave浏…

C#上位机--流程控制(IF语句)

在 C# 上位机开发领域&#xff0c;流程控制是构建功能丰富、逻辑严谨程序的关键。而if语句作为流程控制的基础组成部分&#xff0c;其重要性不言而喻。本文将深入探讨 C# 上位机中if语句的语法结构、应用场景以及实际操作案例&#xff0c;带你领略if语句在程序开发中的魅力与价…

【初阶数据结构】森林里的树影 “堆” 光:堆

文章目录 1.堆的概念及结构2.堆的接口实现2.1 堆的初始化2.2 堆的销毁2.3 堆的交换2.4 堆的向上调整2.5 堆的插入2.6 堆的向下调整2.7 堆的删除2.8 堆顶获取2.9 堆的判空2.10 堆的节点个数2.11 堆的打印2.12 堆的排序&#xff08;向上建堆&#xff09;2.13 堆的排序&#xff08…

【时时三省】(C语言基础)求1*2*3*4*5用C语言表示

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 示例&#xff1a; 输出结果为120

RTSP场景下RTP协议详解及音视频打包全流程

RTSP场景下RTP协议详解及音视频打包全流程 一、RTSP与RTP的关系 RTSP&#xff1a;负责媒体会话控制&#xff08;DESCRIBE、SETUP、PLAY、PAUSE&#xff09;&#xff0c;通过SDP协商传输参数&#xff08;端口、编码格式、封装模式&#xff09;。RTP&#xff1a;实际传输音视频数…

ARM Linux V4L2 Camera 实验

使用 ov2640 V4L2 是 Video for linux two 的简称&#xff0c;是 Linux 内核中视频类设备的一套驱动框架&#xff0c;为视频类设备驱动 开发和应用层提供了一套统一的接口规范 使用 V4L2 设备驱动框架注册的设备会在 Linux 系统/dev/目录下生成对应的设备节点文件&#xff0c…

vxe-table实现动态列

vxe-table实现动态列 1.动态列解释2.解决步骤2.1将后端返回的动态列表头&#xff0c;按照格式拼接在固定列表头上2.2将后端返回的列表数据按照键值对格式组装 1.动态列解释 正常列表是有固定的列&#xff1b;我的需求是&#xff0c;最初只知道表格的固定两列&#xff0c;查询数…

Arcmap和ArcgisPro重装及配置迁移

近期要重装一下ArcgisPro&#xff0c;在此记录并作为大家的借鉴 1.备份配置文件&#xff1a;其中Desktop10.8为Arcmap的配置文件 2.通过控制面板卸载&#xff0c;arcpro卸载时间较长&#xff0c;先将语言包等卸载&#xff0c;最后再卸载5G主程序&#xff0c;有些文章会介绍清理…