首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >用代码示例说明React中的状态(State)和属性(Props)的区别

用代码示例说明React中的状态(State)和属性(Props)的区别

原创
作者头像
程序员老彭
发布2025-10-10 08:41:52
发布2025-10-10 08:41:52
1700
举报
文章被收录于专栏:Java开发Java开发

下面我将通过代码示例来说明React中状态(State)和属性(Props)的区别。

State 是组件内部管理的数据,组件可以自行修改它;而 Props 是从父组件传递给子组件的数据,子组件不能修改它,是只读的。

代码语言:jsx
复制
import React, { useState } from 'react';

// 子组件 - 使用Props
function UserGreeting(props) {
  // 子组件不能修改props,下面这行代码会报错
  // props.name = "New Name";
  
  return <h2>Hello, {props.name}!</h2>;
}

// 父组件 - 使用State和Props
function UserProfile() {
  // 这是State - 组件内部管理的数据
  const [age, setAge] = useState(25);
  
  // 这是父组件中的数据,可以通过Props传递给子组件
  const userName = "John Doe";
  
  // 可以修改State
  const handleAgeIncrement = () => {
    setAge(prevAge => prevAge + 1);
  };
  
  return (
    <div>
      {/* 将数据通过Props传递给子组件 */}
      <UserGreeting name={userName} />
      
      <p>Age: {age}</p>
      {/* 点击按钮修改State */}
      <button onClick={handleAgeIncrement}>Increase Age</button>
    </div>
  );
}

export default UserProfile;

在这个例子中:

  1. State 的特点:
    • ageUserProfile 组件的状态
    • 组件内部通过 setAge 函数修改它
    • 状态的变化会触发组件重新渲染
    • 状态只能在定义它的组件内部访问和修改
  2. Props 的特点:
    • name 是从 UserProfile 传递给 UserGreeting 的属性
    • 子组件 UserGreeting 只能读取 props.name 但不能修改它
    • Props 是父子组件之间通信的主要方式
    • 如果父组件中的数据变化,传递给子组件的 props 也会更新

简单来说,State 是"私有"的、可修改的数据,而 Props 是"外来"的、只读的数据。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档