Button
A button component that can be rendered as another tag or focusable when disabled.
Usage guidelines
- Submit buttons: Unlike the native button element,
type="submit"must be specified on Button for it to act as a submit button. - Links: The Button component enforces button semantics (
role="button", keyboard interaction, disabled state). It should not be used for links. See Rendering links as buttons below.
Anatomy
Import the component:
Examples
Rendering as another tag
The button can remain keyboard accessible while being rendered as another tag, such as a <div>, by specifying nativeButton={false}.
Rendering links as buttons
The Button component enforces button semantics. nativeButton={false} signals that the rendered tag is not a <button>, but it must still be a tag that can receive button semantics (role="button", keyboard interaction handlers). Links (<a>) have their own semantics and should not be rendered as buttons through the render prop.
If a link needs to look like a button visually, style the <a> element directly with CSS rather than using the Button component.
Loading states
For buttons that enter a loading state after activation, specify focusableWhenDisabled so focus remains on the button while it is disabled. Because some browser and screen reader combinations do not reliably announce changes to a focused button’s descendant text, use aria-labelledby to make the changing text the button’s explicit accessible name.
API reference
focusableWhenDisabledbooleanfalse
- Description
Whether the button should be focusable when disabled.
- Type
- Default
false
nativeButtonbooleantrue
- Name
- Description
Whether the component renders a native
<button>element when replacing it via therenderprop. Set tofalseif the rendered element is not a button (for example,<div>).- Type
- Default
true
classNamestring | function—
- Name
- Description
CSS class applied to the element, or a function that returns a class based on the component’s state.
- Type
styleReact.CSSProperties | function—
- Name
- Description
Style applied to the element, or a function that returns a style object based on the component’s state.
- Type
renderReactElement | function—
- Name
- Description
Allows you to replace the component’s HTML element with a different tag, or compose it with another component.
Accepts a
ReactElementor a function that returns the element to render.- Type
data-disabled
Present when the button is disabled.
Attribute | Description | |
|---|---|---|
data-disabled | Present when the button is disabled. | |