【React】04-关于React Props的实践

news/2024/7/15 18:13:28 标签: react.js, 前端, 前端框架

关于React Props的实践

  • 背景
  • 分析
  • 和state区别

背景

React 组件相互传参时,除了用state,还会经常看到一个Props对象,关于它的面纱及两者区别,将在文本进行实践及分析。

分析

React 中的 props 是用于从父组件向子组件传递数据的一种机制。props 是一个包含了传递给组件的属性的对象。通过使用 props,可以使组件之间实现数据的传递和通信

  1. 传递数据: 父组件通过在子组件上使用属性的方式将数据传递给子组件。这样,子组件就能够访问和使用这些数据。
// 父组件
<ChildComponent name="John" age={25} />
  // 子组件
  const ChildComponent = (props) => {
    console.log(props.name); // 输出: John
    console.log(props.age);  // 输出: 25
    // ...
  };
  1. 不可变性(Immutability):props 是只读的,子组件不能直接修改传递给它们的 props。这有助于维护数据的单一来源,并且有助于追踪数据的变化。

  2. 默认值(Default Values): 可以为 props 指定默认值,以确保在未提供特定属性时组件仍能正常工作。


// 在子组件中指定默认值
const ChildComponent = (props) => {
  const { name = 'Guest', age = 0 } = props;
  // ...
};
  1. 类型检查(Type Checking): 使用 PropTypes 库等工具可以对 props 进行类型检查,以确保组件得到正确类型的数据。
import PropTypes from 'prop-types';

const ChildComponent = (props) => {
  // ...
};

ChildComponent.propTypes = {
  name: PropTypes.string.isRequired,
  age: PropTypes.number.isRequired,
};
  1. 解构赋值(Destructuring): 通过解构赋值,可以更方便地从 props 中提取需要的属性。
const ChildComponent = ({ name, age }) => {
  // 使用解构赋值从 props 中提取属性
  // ...
};
  1. 传递函数: 除了传递数据外,还可以通过 props 将函数传递给子组件,以实现父子组件之间的交互。
// 父组件
const ParentComponent = () => {
  const handleClick = () => {
    // 处理点击事件的逻辑
  };

  return <ChildComponent onClick={handleClick} />;
};

// 子组件
const ChildComponent = ({ onClick }) => {
  return <button onClick={onClick}>Click me</button>;
};

和state区别

props(属性)和state(状态)虽然它们可用于处理组件间的数据传递和组件内部的状态管理,但**props是只读的,**子组件不能直接修改传递给它们的 props,state 是可变的,可以通过调用 setState 方法来更新组件的状态。


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

相关文章

Android 车联网——电源管理功能扩展(十)

前面两篇文章介绍了 CarPowerManagementService 和 CarPowerManager 相关代码,他们具有对应关系。对于源码中所提供的功能和电源状态等不足以满足实际开发需求,这里我们列举一些实际项目中所遇到的变化。 一、电源状态变化 对于电源状态实际开发中肯定会比源码中提供的要多,…

MySQL中NULL值与空值的坑

1. 表达含义 在mysql中 空值&#xff1a;表示一个空字符或零长度的字符串&#xff0c;可以使用空引号 来表示&#xff0c;是已被定义的值&#xff1b; NULL值&#xff1a;NULL表示缺少一个已知或适当的值&#xff0c;是未被定义的值&#xff1b;。 2. 比较运算 空值&…

DevOps(5)

目录 21.如何在Linux下访问分区&#xff1f; 22.什么是硬链接&#xff1f; 23.Linux下文件名的最大长度是多少&#xff1f; 24.什么是以点开头的文件名&#xff1f; 25.解释虚拟桌面&#xff1f; 21.如何在Linux下访问分区&#xff1f; Linux在驱动器标识符的末尾分配数字…

初识对抗生成网络(GAN)

在研究语义通信的时候&#xff0c;发现解码端很多都是用GAN或基于GAN来完成的。带着对GAN的好奇&#xff0c;对GAN进行了一个初步学习。这篇文章介绍一下和GAN相关的一些常识吧~   本文围绕以下几个内容展开&#xff1a;     1.什么是GAN&#xff1f;     2.为什么要…

c语言-指针进阶

文章目录 前言一、字符指针二、数组指针2.1 数组指针基础2.2 数组指针作函数参数 总结 前言 在c语言基础已经介绍过关于指针的概念和基本使用&#xff0c;本篇文章进一步介绍c语言中关于指针的应用。 一、字符指针 字符指针是指向字符的指针。 结果分析&#xff1a; "ab…

HTTP代理和SOCKS5 代理区别

代理IP是一种常见的网络工具&#xff0c;可以帮助用户隐藏真实IP地址&#xff0c;提高网络安全性&#xff0c;同时也可以用于网络监测、数据采集、网络推广等应用场景。在代理IP市场中&#xff0c;HTTP代理和SOCKS5 代理是两种常见的代理方式&#xff0c;它们有什么区别呢。 1…

ffmpeg推拉流参数汇总-1

参数含义说明 1. 完整命令 1.1. windows系统 """推流命令""" ffmpeg -f dshow -video_size 1920x1080 -i video"device_pnp_\\?\usb#vid_0c45&pid_6366&mi_00#6&183af011&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c92…

OSPF基本概念与配置(完整版)

目录 路由分类 OSPF概述 一、OSPF的工作过程 二、报文类型 三、OSPF区域 四、OSPF单区域实验案例 拓扑 需求 配置步骤 配置命令 五、OSPF邻居表解析 六、OSPF路由角色 七、OSPF多区域实验案例 拓扑 需求 配置步骤 配置命令 八、邻居建立失败的原因(已广播型网络…