前端框架与库 - React基础:组件、Props、State

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
函数计算FC,每月免费额度15元,12个月
简介: 【7月更文挑战第12天】React是JavaScript库,专注UI构建,基于组件化。组件是UI模块,可函数式或类定义。Props是组件间安全传递数据的只读参数,用defaultProps和propTypes保证正确性。State则是组件内部可变数据,用于驱动更新。使用setState()确保正确变更和渲染。了解并妥善处理这些概念是高效React开发的基础。

React 是一个用于构建用户界面的 JavaScript 库,特别擅长创建可复用的组件。掌握组件、Props 和 State 的概念是学习 React 的基石。本文将深入浅出地探讨这些核心概念,包括常见问题、易错点以及如何避免这些问题,并附带代码示例。
image.png

1. 组件(Component)

组件是 React 中的基本构建单元,可以理解为 UI 的独立部分,每个组件负责渲染页面的一部分。组件可以是函数或类,但在现代 React 中,函数组件更受欢迎,因为它们简洁且易于理解。

易错点:组件命名应遵循首字母大写的规则,否则 React 会将其视为自定义标签处理。

避免方法:确保所有组件名称首字母大写。

代码示例

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

function App() {
  return (
    <div>
      <Welcome name="Sara" />
      <Welcome name="Cahal" />
      <Welcome name="Edite" />
    </div>
  );
}

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

2. Props(属性)

Props 是传递给组件的参数,类似于函数的参数。它们是只读的,不能在组件内部被修改。Props 使得组件之间能够传递数据,增加了组件的复用性。

易错点:忘记传递必要的 Props 可能导致组件无法正常显示或抛出错误。

避免方法

  • 使用默认 Props (defaultProps) 或 Props 类型检查 (propTypes) 来确保组件接收正确的 Props。
  • 在组件内部使用 props.children 来允许子组件的传递。

代码示例

class Avatar extends React.Component {
  render() {
    return (
      <img src={this.props.src} alt={this.props.alt} />
    );
  }
}

Avatar.defaultProps = {
  src: 'default-avatar.jpg',
  alt: 'Default Avatar'
};

function App() {
  return (
    <div>
      <Avatar src="sara.png" alt="Sara" />
      <Avatar /> {/* 使用默认 Props */}
    </div>
  );
}

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

3. State(状态)

State 是组件内部的状态,它可以在组件生命周期中改变,从而触发组件的重新渲染。与 Props 不同,State 是可变的,通常用于存储组件的动态数据。

易错点:直接修改 State 而不是使用 setState() 方法会导致组件不会重新渲染。

避免方法

  • 总是使用 setState() 方法更新 State。
  • 避免在 setState() 的回调函数中访问 State,因为 State 更新可能是异步的。

代码示例

class Counter extends React.Component {
  constructor(props) {
    super(props);
    this.state = { count: 0 };
  }

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

  render() {
    return (
      <div>
        Count: {this.state.count}
        <button onClick={this.handleClick}>Increment</button>
      </div>
    );
  }
}

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

结论

React 的组件、Props 和 State 构成了其核心机制,理解并正确使用它们是开发高质量 React 应用的关键。通过遵循上述指导原则,你可以避免常见的错误,构建出既健壮又易于维护的 React 应用程序。

相关文章
|
4天前
|
前端开发 JavaScript 数据可视化
使用React的函数式组件实现一个具有过渡变化、刻度切换、点击高亮的柱状图DIY组件
本文展示了如何使用React的函数式组件实现一个具有过渡变化、刻度切换、点击高亮效果的自定义柱状图组件,并提供了完整的示例代码和实现效果。
10 1
使用React的函数式组件实现一个具有过渡变化、刻度切换、点击高亮的柱状图DIY组件
|
2天前
|
前端开发
如何编写React函数组件
【8月更文挑战第17天】如何编写React函数组件
7 2
|
5天前
|
前端开发 JavaScript
|
4天前
|
前端开发 C++
使用 Vite 创建 React+TS+SW 项目并整合 AntDesign 、Scss 等组件或插件
本文记录了如何使用Vite创建一个React+TypeScript+Service Workers(SW)项目,并整合AntDesign组件库和Scss等插件,包括项目的创建、配置问题解决、AntDesign和Scss的整合方法。
16 1
|
10天前
|
前端开发 JavaScript 开发者
React组件与JSX之间的区别是什么
【8月更文挑战第9天】 React组件与JSX之间的区别是什么
29 4
|
7天前
|
前端开发 数据安全/隐私保护
React——受控组件和非受控组件【八】
React——受控组件和非受控组件【八】
20 0
|
7天前
|
前端开发 JavaScript
React——组件的三大核心属性【七】
React——组件的三大核心属性【七】
16 0
|
7天前
|
Web App开发 前端开发 JavaScript
React——前端开发中模块与组件【四】
React——前端开发中模块与组件【四】
16 0
|
10天前
|
前端开发 JavaScript 开发者
前端人注意了!Nuxt 的服务器专用组件应该引起你的关注!!
前端人注意了!Nuxt 的服务器专用组件应该引起你的关注!!
|
7天前
|
存储 前端开发 JavaScript
前端语言串讲 | 青训营笔记
前端语言串讲 | 青训营笔记
9 0