Reactstrap is a version Bootstrap made for React.
It’s a set of React components that have Boostrap styles.
In this article, we’ll look at how to add button groups with Reactstrap.
Button Groups
Button groups is a container for grouping buttons together.
For example, we can write:
import React from "react";
import { Button, ButtonGroup } from "reactstrap";
import "bootstrap/dist/css/bootstrap.min.css";
export default function App() {
return (
<>
<ButtonGroup>
<Button>Left</Button>
<Button>Middle</Button>
<Button>Right</Button>
</ButtonGroup>
</>
);
}
We add the ButtonGroup
component with a few Button
s inside.
They’ll be displayed side by side without any gaps in between them.
Button Toolbar
To group button groups, we can use the ButtonToolbar
component.
For instance, we can write:
import React from "react";
import { Button, ButtonGroup, ButtonToolbar } from "reactstrap";
import "bootstrap/dist/css/bootstrap.min.css";
export default function App() {
return (
<>
<ButtonToolbar>
<ButtonGroup>
<Button>1</Button>
<Button>2</Button>
<Button>3</Button>
</ButtonGroup>
<ButtonGroup>
<Button>4</Button>
<Button>5</Button>
<Button>6</Button>
</ButtonGroup>
<ButtonGroup>
<Button>7</Button>
<Button>8</Button>
<Button>9</Button>
</ButtonGroup>
</ButtonToolbar>
</>
);
}
We put our ButtonGroups
inside the ButtonToolbar
.
There won’t be any spaces between the button groups.
Sizing
We can change the sizing of the button group.
To do that, we use the size
prop.
For example, we can write:
import React from "react";
import { Button, ButtonGroup } from "reactstrap";
import "bootstrap/dist/css/bootstrap.min.css";
export default function App() {
return (
<>
<ButtonGroup size="lg">
<Button>foo</Button>
<Button>bar</Button>
<Button>baz</Button>
</ButtonGroup>
<ButtonGroup>
<Button>foo</Button>
<Button>bar</Button>
<Button>baz</Button>
</ButtonGroup>
<ButtonGroup size="sm">
<Button>foo</Button>
<Button>bar</Button>
<Button>baz</Button>
</ButtonGroup>
</>
);
}
We set size
to lg
to make the buttons large.
And we set size
to sm
to make the buttons small.
Omitting the size
prop means we set the size to the default.
Nesting
We can nest ButtonDropdown
s in ButtonGroup
s.
For example, we can write:
import React from "react";
import {
Button,
ButtonGroup,
ButtonDropdown,
DropdownToggle,
DropdownMenu,
DropdownItem
} from "reactstrap";
import "bootstrap/dist/css/bootstrap.min.css";
export default function App() {
const [isOpen, setIsOpen] = React.useState(false);
const toggle = () => setIsOpen(!isOpen);
return (
<>
<ButtonGroup>
<Button>foo</Button>
<Button>bar</Button>
<ButtonDropdown isOpen={isOpen} toggle={toggle}>
<DropdownToggle caret>Dropdown</DropdownToggle>
<DropdownMenu>
<DropdownItem>Link</DropdownItem>
<DropdownItem>Link</DropdownItem>
</DropdownMenu>
</ButtonDropdown>
</ButtonGroup>
</>
);
}
We have the ButtonDropdown
in our ButtonGroup
.
isOpen
is the dropdown open state.
toggle
lets us toggle the dropdown open state.
Vertical Variation
We can add the vertical
prop to make the button group vertical.
For example, we can write:
import React from "react";
import {
Button,
ButtonGroup,
ButtonDropdown,
DropdownToggle,
DropdownMenu,
DropdownItem
} from "reactstrap";
import "bootstrap/dist/css/bootstrap.min.css";
export default function App() {
const [isOpen, setIsOpen] = React.useState(false);
const toggle = () => setIsOpen(!isOpen);
return (
<>
<ButtonGroup vertical>
<Button>foo</Button>
<Button>bar</Button>
<ButtonDropdown isOpen={isOpen} toggle={toggle}>
<DropdownToggle caret>Dropdown</DropdownToggle>
<DropdownMenu>
<DropdownItem>Link</DropdownItem>
<DropdownItem>Link</DropdownItem>
</DropdownMenu>
</ButtonDropdown>
</ButtonGroup>
</>
);
}
to make the button group vertical.
Conclusion
We can add button groups to group buttons together.
Also, we can add button toolbars to add button groups.