在 React 中,状态(State)和属性(Props)是构建组件的基础。理解它们如何工作对于编写高效和可重用的组件至关重要。

状态(State)

状态是组件内部的数据,它随着时间而变化。状态通常用于处理用户交互和动态内容。

  • 更新状态:使用 setState 方法更新状态。
  • 异步更新:React 可能会批量更新状态以优化性能。
class Counter extends React.Component {
  constructor(props) {
    super(props);
    this.state = { count: 0 };
  }

  handleClick = () => {
    this.setState({ count: this.state.count + 1 });
  };

  render() {
    return (
      <div>
        <p>计数: {this.state.count}</p>
        <button onClick={this.handleClick}>点击我</button>
      </div>
    );
  }
}

属性(Props)

属性是组件接收的数据,通常由父组件传递给子组件。

  • 只读:属性是只读的,不能在子组件内部修改。
  • 传递数据:通过属性传递数据到子组件。
function Greeting(props) {
  return <h1>Hello, {props.name}!</h1>;
}

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<Greeting name="Alice" />);

图片示例

以下是一个 React 组件的示例,展示了如何使用状态和属性。

import React, { useState } from 'react';

function ImageComponent(props) {
  const [imageSrc, setImageSrc] = useState(props.defaultImage);

  return (
    <div>
      <img src={imageSrc} alt="Random Image" />
      <button onClick={() => setImageSrc(props.nextImage)}>Next Image</button>
    </div>
  );
}

const App = () => {
  return (
    <div>
      <h1>Random Image Viewer</h1>
      <ImageComponent
        defaultImage="https://cloud-image.ullrai.com/q/image_1/"
        nextImage="https://cloud-image.ullrai.com/q/image_2/"
      />
    </div>
  );
};

ReactDOM.render(<App />, document.getElementById('root'));

Image 1
Image 2

更多关于 React 的信息,请访问 React 官方文档