我是React的新手,我试图创建一个Menu Sidebar,通过它我可以导航到其他页面。这是我用来创建动态边栏的功能。
function SidebarItem({ depthStep = 10, depth = 0, expanded, item, ...rest }) {
const [collapsed, setCollapsed] = React.useState(true);
const { label, items, Icon, onClick: onClickProp , route } = item;
function toggleCollapse() {
setCollapsed(prevValue => !prevValue);
}
function onClick(e) {
if (Array.isArray(items)) {
toggleCollapse();
}
if (onClickProp) {
onClickProp(e, item);
}
}
let expandIcon;
if (Array.isArray(items) && items.length) {
expandIcon = !collapsed ? (
<ExpandLessIcon
className={
"sidebar-item-expand-arrow" + " sidebar-item-expand-arrow-expanded"
}
/>
) : (
<ExpandMoreIcon className="sidebar-item-expand-arrow"/>
);
}
return (
<>
<ListItem
className="sidebar-item"
onClick={onClick}
button
dense
{...rest}
>
<div
style={{ paddingLeft: depth * depthStep }}
className="sidebar-item-content"
>
{Icon && <Icon className="sidebar-item-icon" fontSize="small" />}
<div className="sidebar-item-text">{label}</div>
</div>
{expandIcon}
</ListItem>
<Collapse in={!collapsed} timeout="auto" unmountOnExit>
{Array.isArray(items) ? (
<List disablePadding dense>
{items.map((subItem, index) => (
<React.Fragment key={`${subItem.name}${index}`}>
{subItem === "divider" ? (
<Divider style={{ margin: "6px 0" }} />
) : (
<SidebarItem
depth={depth + 1}
depthStep={depthStep}
item={subItem}
/>
)}
</React.Fragment>
))}
</List>
) : null}
</Collapse>
</>
);
}
function Sidebar({ items, depthStep, depth, expanded }) {
return (
<div className="sidebar">
<List disablePadding dense>
{items.map((sidebarItem, index) => (
<React.Fragment key={`${sidebarItem.name}${index}`}>
{sidebarItem === "divider" ? (
<Divider style={{ margin: "6px 0" }} />
) : (
<SidebarItem
depthStep={depthStep}
depth={depth}
expanded={expanded}
item={sidebarItem}
/>
)}
</React.Fragment>
))}
</List>
</div>
);
}
如何在ListItem中动态实现Navlink?上面代码第三行中的 route 是我要将该项路由到的路径。 预先感谢。