React MUI Lists Display
React Lists are a continuous group of text or images. They are composed of items containing primary and supplemental actions, which are represented by icons and text. Material UI is a library of React UI components that implements Google's Material Design.
It includes a comprehensive collection of prebuilt components that are ready for use in production right out of the box.
There are different types of lists available in MUI React which are:
- Basic List: This is a simple list of items, which allows to display or perform actions using a specific item.
- Nested List: This is a list where an item in the list has another sub-list inside itself.
- Interactive List: This is a list that can change its appearance and behavior according to user requirements.
In this article, we will create a demo react application that will showcase a Nested list and a basic list with checkboxes.
Creating the Demo React Application:
Step 1: Create a React application using the following command.
npx create-react-app myapp
Step 2: After creating the app, move to its directory using the following command:
cd foldername
Step 3: Now install the material-UI modules using the following command.
npm install @mui/material @emotion/react @emotion/styled npm install @mui/icons-material
Project Structure: The Project directory will be looking like this after completing all the above steps:

Example 1: In this example, we will be creating a list of different categories of mail which will depict a sub-classification of inbox mail type using nested list format. The ExpandLess and ExpandMore are used to close and open the sub-list inside Inbox list item. When it is clicked the handleClick method expands or collapses the sub-list.
NestedList.js:
import * as React from 'react';
import ListSubheader from '@mui/material/ListSubheader';
import List from '@mui/material/List';
import ListItemButton from '@mui/material/ListItemButton';
import ListItemIcon from '@mui/material/ListItemIcon';
import ListItemText from '@mui/material/ListItemText';
import Collapse from '@mui/material/Collapse';
import InboxIcon from '@mui/icons-material/MoveToInbox';
import DraftsIcon from '@mui/icons-material/Drafts';
import SendIcon from '@mui/icons-material/Send';
import ExpandLess from '@mui/icons-material/ExpandLess';
import ExpandMore from '@mui/icons-material/ExpandMore';
import StarBorder from '@mui/icons-material/StarBorder';
export default function NestedList() {
const [open, setOpen] = React.useState(true);
const handleClick = () => {
setOpen(!open);
};
return (
<List
sx={{ width: '100%', maxWidth: 360,
bgcolor: 'background.paper' }}
component="nav"
aria-labelledby="nested-list-subheader"
subheader={
<ListSubheader component="div"
id="nested-list-subheader">
Nested List Items
</ListSubheader>
}
>
<ListItemButton>
<ListItemIcon>
<SendIcon />
</ListItemIcon>
<ListItemText primary="Sent mail" />
</ListItemButton>
<ListItemButton>
<ListItemIcon>
<DraftsIcon />
</ListItemIcon>
<ListItemText primary="Drafts" />
</ListItemButton>
<ListItemButton onClick={handleClick}>
<ListItemIcon>
<InboxIcon />
</ListItemIcon>
<ListItemText primary="Inbox" />
{open ? <ExpandLess /> : <ExpandMore />}
</ListItemButton>
<Collapse in={open} timeout="auto" unmountOnExit>
<List component="div" disablePadding>
<ListItemButton sx={{ pl: 4 }}>
<ListItemIcon>
<StarBorder />
</ListItemIcon>
<ListItemText primary="Starred" />
</ListItemButton>
<ListItemButton sx={{ pl: 4 }}>
<ListItemIcon>
<StarBorder />
</ListItemIcon>
<ListItemText primary="UnRead" />
</ListItemButton>
<ListItemButton sx={{ pl: 4 }}>
<ListItemIcon>
<StarBorder />
</ListItemIcon>
<ListItemText primary="Read" />
</ListItemButton>
</List>
</Collapse>
</List>
);
}
After creating the creating our NestedList, we will import it in our base file App.js. Update the App.js file in the /src directory with below code:
App.js:
import React from "react";
import NestedList from "./NestedList";
function App() {
return (
<div>
<NestedList />
</div>
);
}
export default App;
Step to run the application: Open the terminal and type the following command to run the Application.
npm start
Output: Go To http://localhost:3000/ and the following result will be displayed:

Example 2: In this example, we will create a simple list with checkboxes that can store items that are selected by the user for a particular task.
CheckBoxList.js
import * as React from 'react';
import List from '@mui/material/List';
import ListItem from '@mui/material/ListItem';
import ListItemButton from '@mui/material/ListItemButton';
import ListItemIcon from '@mui/material/ListItemIcon';
import ListItemText from '@mui/material/ListItemText';
import Checkbox from '@mui/material/Checkbox';
import IconButton from '@mui/material/IconButton';
import CommentIcon from '@mui/icons-material/Comment';
export default function CheckBoxList() {
const [checked, setChecked] = React.useState([0]);
const handleToggle = (value) => () => {
const currentIndex = checked.indexOf(value);
const newChecked = [...checked];
if (currentIndex === -1) {
newChecked.push(value);
} else {
newChecked.splice(currentIndex, 1);
}
setChecked(newChecked);
};
return (
<List sx={{ width: '100%', maxWidth: 360,
bgcolor: 'background.paper' }}>
{[0, 1, 2, 3].map((value) => {
const labelId = `checkbox-list-label-${value}`;
return (
<ListItem
key={value}
disablePadding
>
<ListItemButton role={undefined}
onClick={handleToggle(value)} dense>
<ListItemIcon>
<Checkbox
edge="start"
checked={
checked.indexOf(value) !== -1}
tabIndex={-1}
disableRipple
inputProps=
{{ 'aria-labelledby': labelId }}
/>
</ListItemIcon>
<ListItemText id={labelId}
primary={`List ${value + 1}`} />
</ListItemButton>
</ListItem>
);
})}
</List>
);
}
After creating our CheckBoxList, we will import it into our base file App.js. Update with the following code in App.js inside our /src directory to use our checkbox list.
App.js:
import React from "react";
import CheckBoxList from "./CheckBoxList";
function App() {
return (
<div>
<CheckBoxList />
</div>
);
}
export default App;
Output: Go To http://localhost:3000/ and the following result will be displayed:

Reference: https://mui.com/material-ui/react-list/