如何在 React 中为按钮组件正确添加 disabled 属性

本文详解如何在自定义 react 按钮组件中正确透传并应用 `disabled` 属性,确保其作为原生 html 属性生效,同时保持组件的类型安全与可维护性。

在 React 中,disabled 是

你当前的组件未将 disabled prop 应用于

import React from 'react';
import PropTypes from 'prop-types';

export default function Button({ htmlType, type, disabled, action, ...props }) {
  return (
    
  );
}

Button.propTypes = {
  htmlType: PropTypes.string.isRequired,
  type: PropTypes.string, // 可选:补充 type 类型校验
  disabled: PropTypes.bool,
  action: PropTypes.func,
};
? 注意:onClick 事件在 disabled={true} 时自动失效,无需额外判断;React 会正确渲染 ,浏览器原生行为将阻止点击和聚焦。

调用方式保持不变,语义清晰:



最佳实践补充

  • 使用 ...props 展开剩余属性,支持 className、aria-label、data-* 等通用 HTML 属性;
  • 为 disabled 添加默认值 false,避免未传时为 undefined 导致意外行为(可写为 { disabled = false });
  • 若需兼容服务端渲染(SSR),确保 disabled 始终为布尔值——避免传入 null/undefined,PropTypes 已提供基础防护。

至此,你的按钮组件既符合 HTML 规范,又具备良好的可复用性与可访问性(无障碍支持)。