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

news/2025/2/25 12:08:59
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/5865480.html

相关文章

Mac下VSCode调试skynet的lua环境配置

Mac下VSCode调试skynet的lua环境配置 安装Lua5.4安装Luasocket下载LuaPanda.lua安装VScode LuaPanda插件配置skynet&#xff0c;在lua_cpath引入luasocket库创建launch.json在需要调试的lua文件里面添加代码 安装Lua5.4 brew install lua5.4安装Luasocket LuaPanda需要luasoc…

IO进程 day05

IO进程 day05 9. 进程9. 9. 守护进程守护进程的特点守护进程创建步骤 10. 线程10.1. 线程的概念10.2. 进程和线程的区别10.2. 线程资源10.3. 线程的函数接口1. pthread_create-创建线程线程函数和普通函数的区别 2. pthread_exit3.线程资源回收函数join和detach的区别 获取线程…

Flink API 解析 Flink Job 依赖的checkpoint 路径

引言 之前写一篇 Python 脚本解析 Flink _metadata 中依赖的 checkpoint 路径文章 Python解析 Flink Job 依赖的checkpoint 路径 &#xff0c;代码比较暴力&#xff0c;直接按照 checkpoint 路径前缀判断&#xff0c;最近发现网上有通过 Flink API 解析 Flink Checkpoint 元数…

【JavaEE进阶】Spring Boot配置文件

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗 如有错误&#xff0c;欢迎指出~ 目录 SpringBoot配置⽂件 举例: 通过配置文件修改端口号 配置⽂件的格式 properties基本语法 读取配置⽂件 properties配置文件的缺点 yml配置⽂件 yml基本语法 yml和proper…

【搭建SigNoz性能监控平台】在Ubuntu上快速搭建高效的SigNoz性能监控平台与远程使用技巧

文章目录 前言1.关于SigNoz2.本地部署SigNoz3.SigNoz简单使用4. 安装内网穿透5.配置SigNoz公网地址6. 配置固定公网地址 前言 本文介绍如何在Ubuntu系统上使用 Docker 快速部署一款强大的应用性能监控工具SigNoz&#xff0c;并结合cpolar内网穿透工具轻松实现异地远程使用。 …

插入排序:一种简单而直观的排序算法

大家好&#xff01;今天我们来聊聊一个简单却非常经典的排序算法——插入排序&#xff08;Insertion Sort&#xff09;。在所有的排序算法中&#xff0c;插入排序是最直观的一个。 一、插入排序的基本思想 插入排序的核心思想是&#xff1a;将一个待排序的元素&#xff0c;插…

独立开发者Product Hunt打榜教程

Product Hunt 是创业者和开发者展示新产品的地方&#xff0c;对于独立开发者来说&#xff0c;打榜不仅仅是展示产品的良机&#xff0c;更是提高品牌知名度和获取早期用户的重要途径。以下是独立开发者如何在Product Hunt上打榜的详细教程&#xff1a; 1. 产品准备阶段 确保产…

conda 基本命令

1、查询当前所有的环境 conda env list 2、创建虚拟环境 conda create -n 环境名 [pythonpython版本号] 其中[pythonpython版本号]可以不写 conda create -n test python3.12 我们输入conda env list看到我们的环境创建成功了&#xff0c;但是发现他是创建在我们默认的C盘的…