В этом случае каждый ListItem
читает из состояния select
. Таким образом, если select
равно true
, то выбираются все ListItem
. То же самое, если оно ложно.
Поскольку вам нужно выбрать только один ListItem
, вы можете вместо этого сохранить индекс этого конкретного ListItem
в состоянии.
Попробуйте что-то вроде этого :
import React, { useState } from 'react';
import {
ListItem,
ListItemIcon,
List,
} from '@material-ui/core';
import navLinks from 'components/navLinks';
import { Link } from 'react-router-dom';
const simpleList= () => {
// setting initial index as null so that nothing is selected.
// If you want first index to be selected, set initial state as 0
const [selectedIndex, setSelectedIndex] = useState(null);
const setActive = (index) => {
setSelectedIndex(index);
};
return (
<List>
{navLinks.map((item, index) => (
<div
key={item.id}
>
<Link
className="simple-menu-link"
to={item.url}
>
<ListItem
button
key={item.id}
selected={index === selectedIndex}
onClick={() => { setActive(index); }}
>
<ListItemIcon>
{item.icon}
</ListItemIcon>
</ListItem>
</Link>
</div>
))}
</List>
);
};
export default simpleList;