React函数组件中推荐在参数位置直接解构props,支持默认值、剩余属性、children重命名及类型校验,提升可读性与维护性。

在 React 函数组件中,Props 接收时直接使用对象解构是最常用也最简洁的方式。它把传入的 props 对象自动拆成独立变量,省去反复写 props.xxx 的步骤,代码更清晰、可读性更强。
解构写法:在参数位置直接展开
这是最推荐的做法——把解构逻辑写在函数参数里:
- 基础形式:
const MyComponent = ({ title, description, isActive }) => { ... } - 支持默认值:
const MyComponent = ({ title = "默认标题", count = 0 }) => { ... } - 保留原始 props 对象(如需访问未解构字段):
const MyComponent = ({ title, ...rest }) => { console.log(rest); ... }
解构时处理 children 和特殊字段
children 是一个常见 props,它代表组件标签内的内容,同样可以解构出来:
使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。
const Card = ({ children, className }) =>{children};- 如果需要重命名或设置默认值:
const Alert = ({ children: content = "提示信息", type = "info" }) =>{content};
配合扩展运算符传递与接收多属性
当父组件用 {...obj} 展开传入多个 props,子组件解构就能自然对应:
- 父组件:
- 子组件:
const UserCard = ({ name, email, avatar, size = "medium" }) => ... - 注意:后面写的属性(如
size)会覆盖前面展开对象里同名的字段
解构 + 类型校验(PropTypes 或 TypeScript)
解构本身不提供类型保护,建议搭配类型检查:
- PropTypes 示例:
UserCard.propTypes = { name: PropTypes.string.isRequired, email: PropTypes.string }; - TypeScript 中直接写接口:
interface UserCardProps { name: string; email?: string; },再解构:const UserCard = ({ name, email }: UserCardProps) => ...










