本文档概述了 Airbnb JavaScript 风格指南在 React 组件中处理 props、state 和 events 的最佳实践。它提供了关于命名约定、验证、初始化、更新和绑定模式的指导,以确保一致、可维护且高性能的 React 代码。
有关 React 组件结构的信息,请参阅 React 组件结构。有关 JSX 格式和可访问性实践的信息,请参阅 JSX 格式和可访问性。
Props("properties" 的缩写)是 React 从父组件向子组件传递数据的机制。Airbnb 风格指南为有效使用 props 提供了特定的约定。
userName,phoneNumber)Component={SomeComponent})style, className)用于其他目的true 时,省略 prop 的值来源: react/README.md308-323 packages/eslint-config-airbnb/rules/react.js427-431
any、array 和 object 作为 prop types,除非有 shape 定义Props Validation Flow Diagram
来源: react/README.md402-430 packages/eslint-config-airbnb/rules/react.js227-233 packages/eslint-config-airbnb/rules/react.js398-401
来源: react/README.md432-482 packages/eslint-config-airbnb/rules/react.js446-447
State 表示组件的内部数据,这些数据会随着时间而变化。Airbnb 风格指南为妥善管理 state 提供了指导。
来源: packages/eslint-config-airbnb/rules/react.js492-494
setState()setState() 中不要依赖 this.state,因为它可能已过时componentWillUpdate 和 componentDidUpdate 中避免使用componentDidMount 中使用(尽管 Airbnb 的配置中已禁用此规则)State Update Lifecycle
来源: packages/eslint-config-airbnb/rules/react.js195-197 packages/eslint-config-airbnb/rules/react.js450-451 packages/eslint-config-airbnb/rules/react.js183-189 packages/eslint-config-airbnb/rules/react.js192-193
shouldComponentUpdatethis._isMounted)来管理 state来源: packages/eslint-config-airbnb/rules/react.js422-423 packages/eslint-config-airbnb/rules/react.js418-419 packages/eslint-config-airbnb/rules/react.js199-201
Events 是 React 组件中的用户交互。Airbnb 风格指南为事件处理程序的命名和绑定提供了约定。
handle 开头(例如,handleClick)on 开头(例如,onClick)Event Naming Convention
来源: packages/eslint-config-airbnb/rules/react.js88-93 packages/eslint-config-airbnb/rules/react.js249-262
.bind()来源: react/README.md573-617 packages/eslint-config-airbnb/rules/react.js108-116
理解 props、state 和 events 如何交互对于构建可维护的 React 应用程序至关重要。
React Data Flow Diagram
Event Handling Sequence
来源: react/README.md573-617 packages/eslint-config-airbnb/rules/react.js249-262
| 类别 | 规则 | ESLint 规则 | 严重性 |
|---|---|---|---|
| Props | Prop 名称使用 camelCase | 不适用 | 建议 |
| Props | 为 true 的布尔 Prop 省略值 | react/jsx-boolean-value | error |
| Props | 始终使用 PropTypes 进行验证 | react/prop-types | error |
| Props | 为非必需 Prop 定义 defaultProps | react/require-default-props | error |
| Props | 谨慎使用展开 Prop | react/jsx-props-no-spreading | error |
| Props | 始终使用解构来处理 Prop | react/destructuring-assignment | error |
| 状态管理 | 在构造函数中初始化 state | react/state-in-constructor | error |
| 状态管理 | 切勿直接修改 state | react/no-direct-mutation-state | off (但推荐) |
| 状态管理 | 不要在 setState 中访问 this.state | react/no-access-state-in-setstate | error |
| 状态管理 | 避免使用未使用的 state 值 | react/no-unused-state | error |
| 事件 | 在构造函数中绑定处理程序 | react/jsx-no-bind | error |
| 事件 | 处理程序命名约定 | react/jsx-handler-names | off (但推荐) |
| 事件 | 谨慎使用箭头函数 | 不适用 | 建议 |
来源: packages/eslint-config-airbnb/rules/react.js18-603
本指南根据 Airbnb JavaScript 风格指南,提供了处理 React 组件中 props、state 和 events 的基本最佳实践。遵循这些约定有助于创建一致、可维护且性能优良的 React 应用程序。
刷新此 Wiki
最后索引时间2025年4月17日(11f986)