React Suite is a useful UI library that lets us add many components easily into our React app.
In this article, we’ll look at how to use it to add components to our React app.
Input Picker
We can add the InputPicker component to let users select one choice.
For instance, we can write:
import React from "react";
import { InputPicker } from "rsuite";
import "rsuite/dist/styles/rsuite-default.css";
const data = [
{
label: "Apple",
value: "apple",
role: "fruit"
},
{
label: "Orange",
value: "orange",
role: "fruit"
}
];
export default function App() {
return (
<div className="App">
<InputPicker data={data} style={{ width: 225 }} />
</div>
);
}
The label property is displayed to the user.
value is the value that’s set when selected.
We can change the size with the size prop:
import React from "react";
import { InputPicker } from "rsuite";
import "rsuite/dist/styles/rsuite-default.css";
const data = [
{
label: "Apple",
value: "apple",
role: "fruit"
},
{
label: "Orange",
value: "orange",
role: "fruit"
}
];
export default function App() {
return (
<div className="App">
<InputPicker data={data} size="lg" />
</div>
);
}
lg makes it large.
We can also set it to md for medium, sm for small, or xs for extra small.
Also, we can make it a block-level element with the block prop:
import React from "react";
import { InputPicker } from "rsuite";
import "rsuite/dist/styles/rsuite-default.css";
const data = [
{
label: "Apple",
value: "apple",
role: "fruit"
},
{
label: "Orange",
value: "orange",
role: "fruit"
}
];
export default function App() {
return (
<div className="App">
<InputPicker data={data} block />
</div>
);
}
We can add option groups with the groupBy prop:
import React from "react";
import { InputPicker } from "rsuite";
import "rsuite/dist/styles/rsuite-default.css";
const data = [
{
label: "Apple",
value: "apple",
role: "Fruit"
},
{
label: "Orange",
value: "orange",
role: "Fruit"
},
{
label: "Lettuce",
value: "lettuce",
role: "Vegetable"
}
];
export default function App() {
return (
<div className="App">
<InputPicker data={data} groupBy="role" />
</div>
);
}
We set it to the property name we want to group by.
The creatable prop lets us enter our own choice into the dropdown:
import React from "react";
import { InputPicker } from "rsuite";
import "rsuite/dist/styles/rsuite-default.css";
const data = [
{
label: "Apple",
value: "apple",
role: "Fruit"
},
{
label: "Orange",
value: "orange",
role: "Fruit"
},
{
label: "Lettuce",
value: "lettuce",
role: "Vegetable"
}
];
export default function App() {
return (
<div className="App">
<InputPicker data={data} creatable />
</div>
);
}
We can render custom choices with the renderMenuItem prop:
import React from "react";
import { InputPicker } from "rsuite";
import "rsuite/dist/styles/rsuite-default.css";
const data = [
{
label: "Apple",
value: "apple",
role: "Fruit"
},
{
label: "Orange",
value: "orange",
role: "Fruit"
},
{
label: "Lettuce",
value: "lettuce",
role: "Vegetable"
}
];
export default function App() {
return (
<div className="App">
<InputPicker
data={data}
renderMenuItem={(label, item) => {
return (
<div>
<i className="rs-icon rs-icon-user" /> {label}
</div>
);
}}
renderMenuGroup={(label, item) => {
return (
<div>
<i className="rs-icon rs-icon-group" /> {label} - (
{item.children.length})
</div>
);
}}
renderValue={(value, item, selectedElement) => {
return (
<div>
<span style={{ color: "#575757" }}>
<i className="rs-icon rs-icon-user" /> Choice:
</span>
{value}
</div>
);
}}
/>
</div>
);
}
renderMenuGroup renders an option group our way.
renderValue renders the selected value.
We just return the JSX for specifying how we render the items.
Conclusion
We can add dropdowns that are customizable with React Suite.