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

关于React Props的实践

背景

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 方法来更新组件的状态。

相关推荐

  1. React04-关于React Props实践

    2024-01-05 17:10:03       34 阅读
  2. 关于react注意事项和问题

    2024-01-05 17:10:03       11 阅读
  3. React——关于react概述

    2024-01-05 17:10:03       24 阅读
  4. day04--react中state简化

    2024-01-05 17:10:03       12 阅读
  5. 处理关于 React lazy 白屏两种方案

    2024-01-05 17:10:03       21 阅读
  6. 关于react native文件路径烦心事

    2024-01-05 17:10:03       11 阅读
  7. React——关于事件处理

    2024-01-05 17:10:03       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-05 17:10:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-05 17:10:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-05 17:10:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-05 17:10:03       18 阅读

热门阅读

  1. 如何有效使用 .gitignore 文件

    2024-01-05 17:10:03       37 阅读
  2. Spring aspect 解析

    2024-01-05 17:10:03       38 阅读
  3. Verilog视频信号图形显示 FPGA(iCE40)

    2024-01-05 17:10:03       44 阅读
  4. 网络安全试题进阶——附答案

    2024-01-05 17:10:03       36 阅读
  5. LeetCode50. Pow(x, n)

    2024-01-05 17:10:03       33 阅读
  6. 小柱的笔记

    2024-01-05 17:10:03       26 阅读
  7. AI+金融:大模型引爆金融科技革命

    2024-01-05 17:10:03       28 阅读