---
title: React Button Component
name: Buttons
description: React button component for actions in tables, forms, cards, and more. CoreUI for React.js provides various styles, states, and size. Ready to use and easy to customize.
route: /components/button/
other_frameworks: button
---

## How to use React Button Component.

CoreUI includes a bunch of predefined buttons components, each serving its own semantic purpose. React buttons show what action will happen when the user clicks or touches it. CoreUI buttons are used to initialize operations, both in the background or foreground of an experience.

<ExampleSnippet component="ButtonExample" componentName="React Button" />

<Callout color="warning" type="colorAssistiveTechnologies" />

## Disable text wrapping

If you don't want the react button text to wrap, you can add the `.text-nowrap` className to the `<CButton>`. In Sass, you can set `$btn-white-space: nowrap` to disable text wrapping for each button.

## Button components

The `<CButton>` component are designed for `<button>` , `<a>` or `<input>` elements (though some browsers may apply a slightly different rendering).

If you're using `<CButton>` component as `<a>` elements that are used to trigger functionality ex. collapsing content, these links should be given a `role="button"` to adequately communicate their meaning to assistive technologies such as screen readers.

<ExampleSnippet component="ButtonComponentsExample" componentName="React Button" />

## Outline buttons

### Base outline style

The `variant="outline` property provides a neutral outline button style without any color modifiers. It’s useful as a foundation for minimal buttons without background color or strong visual emphasis.

<ExampleSnippet component="ButtonOutlineBaseClassExample" componentName="React Button" />

These React buttons use a transparent background, subtle border, and inherit text color from the parent context. They’re best suited for minimalist UI elements like modals, toolbars, or secondary actions.

### Themed outline variants

If you need a button, but without the strong background colors, set `color` and `variant=" outline"` props to remove all background colors.

<ExampleSnippet component="ButtonOutlineExample" componentName="React Button" />

These outline variants of our React.js buttons retain transparent backgrounds by default, but display a background tint on hover or focus to indicate interactivity. They’re ideal for secondary actions when you want to differentiate from the standard buttons visually.

<Callout color="info">
  Some of the button styles use a relatively light foreground color, and should only be used on a
  dark background in order to have sufficient contrast.
</Callout>

## Ghost buttons

### Base ghost style

Use the `variant="ghost"` property to create ultra-minimalist buttons with no borders and a fully transparent background. These React buttons rely solely on text color for visibility and apply a background highlight when hovered over or in an active state.

They’re perfect for interfaces where you want buttons to be present but visually unobtrusive—such as action buttons in modals, cards, or toolbars.

<ExampleSnippet component="ButtonGhostBaseClassExample" componentName="React Button" />

To apply theme colors to React ghost buttons, use the `color` and `variant="ghost"` properties. By default, these variants color only the text. On hover or focus, they add a background that corresponds to the theme color.

<ExampleSnippet component="ButtonGhostExample" componentName="React Button" />

## Sizes

Larger or smaller react buttons? Add `size="lg"` or `size="sm"` for additional sizes.

<ExampleSnippet component="ButtonSizesExample" componentName="React Button" />

<ExampleSnippet component="ButtonSizes2Example" componentName="React Button" />

You can even roll your own custom sizing with CSS variables:

<ExampleSnippet component="ButtonSizes3Example" componentName="React Button" />

## Shapes

### Pill buttons

<ExampleSnippet component="ButtonShapePillExample" componentName="React Button" />

### Square buttons

<ExampleSnippet component="ButtonShapeSquareExample" componentName="React Button" />

## Disabled state

Add the `disabled` boolean prop to any `<CButton>` component to make buttons look inactive. Disabled button has `pointer-events: none` applied to, disabling hover and active states from triggering.

<ExampleSnippet component="ButtonDisabledExample" componentName="React Button" />

Disabled buttons using the `<a>` component act a little different:

`<a>`s don't support the `disabled` attribute, so CoreUI has to add `.disabled` className to make buttons look inactive. CoreUI also has to add to the disabled button component `aria-disabled="true"` attribute to show the state of the component to assistive technologies.

<ExampleSnippet component="ButtonDisabled2Example" componentName="React Button" />

The `.disabled` class uses `pointer-events: none` to try to disable the link functionality of `<a>`s, but that CSS property is not yet standardized. Besides, even in browsers that do support `pointer-events: none`, keyboard navigation remains unaffected, meaning that sighted keyboard users and users of assistive technologies will still be able to activate these links. So to be safe, we automatically add a `tabindex="-1"` attribute on disabled links (to prevent them from receiving keyboard focus) and use custom JavaScript to disable their functionality.

## Block buttons

Create buttons that span the full width of a parent—by using utilities.

<ExampleSnippet component="ButtonBlockExample" componentName="React Button" />

Here we create a responsive variation, starting with vertically stacked buttons until the `md` breakpoint, where `.d-md-block` replaces the `.d-grid` class, thus nullifying the `gap-2` utility. Resize your browser to see them change.

<ExampleSnippet component="ButtonBlock2Example" componentName="React Button" />

You can adjust the width of your block buttons with grid column width classes. For example, for a half-width "block button", use `.col-6`. Center it horizontally with `.mx-auto`, too.

<ExampleSnippet component="ButtonBlock3Example" componentName="React Button" />

Additional utilities can be used to adjust the alignment of buttons when horizontal. Here we've taken our previous responsive example and added some flex utilities and a margin utility on the button to right align the buttons when they're no longer stacked.

<ExampleSnippet component="ButtonBlock4Example" componentName="React Button" />

## API

Check out the documentation below for a comprehensive guide to all the props you can use with the components mentioned here.

- [&lt;CButton /&gt;](./api/#cbutton)
