当前位置: 首页 > news >正文

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

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

  1. 在子组件中定义 props

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

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

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

2. 示例代码

子组件 (ChildComponent.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.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.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.vue)
  1. props 定义

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

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

  2. 模板中使用 props

    通过 {{ message }} 和 {{ number }} 显示父组件传递过来的数据。
父组件 (ParentComponent.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,可以实现父组件数据变化时,子组件自动更新。

相关文章:

  • Linux 系统中的软链接与硬链接
  • (java/Spring boot)使用火山引擎官方推荐方法向大模型发送请求
  • Ubuntu DeepSeek磁盘空间不够解决办法
  • SQL写法技巧
  • Elasticsearch:探索 CLIP 替代方案
  • Python Django系列—入门实例(二)
  • Spring扩展点之Mybatis整合模拟
  • 深入理解 JSP 与 Servlet:原理、交互及实战应用
  • Java计算机毕业设计基于SSM宠物美容信息管理系统数据库源代码+LW文档+开题报告+答辩稿+部署教程+代码讲解
  • HTML中,title和h1标签的区别是什么?
  • DNS, domain name system
  • 深搜专题2:组合问题
  • 第15天学习:类和对象的概念
  • ragflow-RAPTOR到底是什么?请通俗的解释!
  • 智能交通系统(Intelligent Transportation Systems):智慧城市中的交通革新
  • 【网络安全】常见的web攻击
  • 23. AI-大语言模型-DeepSeek简介
  • deepseek自动化代码生成
  • 《微软量子芯片:开启量子计算新纪元》:此文为AI自动生成
  • [SQL] 事务的四大特性(ACID)
  • 首次面向上海、江苏招收本科生,西湖大学接连发布招生简章
  • 澎湃读报丨央媒头版集中刊发社论,庆祝“五一”国际劳动节
  • 共绘“彩色上海”,IP SH艺术共创沙龙首期圆满举办
  • 史学巨擘的思想地图与学术路径——王汎森解析梁启超、陈寅恪、傅斯年
  • 上海74岁老人宜春旅游时救起落水儿童,“小孩在挣扎容不得多想”
  • 助力企业高质量出海,上海静安发放服务包、服务券