在 React 中将 Link 放入 StyledMenuItem
Put Link in StyledMenuItem in React
我想放 Link
这样我就可以在 React 中导航到其他页面。为什么这不是导航
代码
<StyledMenu
anchorEl={settingsMenu}
keepMounted
open={Boolean(settingsMenu)}
onClose={handleClose}>
<StyledMenuItem>
<ListItemIcon component={Link} to={`/accounts`}>
<PersonIcon />
</ListItemIcon>
<ListItemText primary="accounts" />
</StyledMenuItem>
<StyledMenuItem component={Link} to={`/orders`}>
<ListItemIcon>
<OrderIcon />
</ListItemIcon>
<ListItemText primary="Orders" />
</StyledMenuItem>
</StyledMenu>;
假设 <StyledMenuItem>
是您的自定义组件,您可以通过将整个 JSX 包装在 component
属性中来轻松地做到这一点。对于传递给它的其他道具(例如,to
),只需将它们解构并将它们作为道具放置到新包装器 component
.
import React, { Component } from "react";
export default class StyledMenuItem extends Component {
render() {
// simply checks to see if a component prop is passed
let WrapperComponent = this.props.component;
if (WrapperComponent === undefined) {
WrapperComponent = React.Fragment;
}
return (
<WrapperComponent {...this.props}>
{this.props.children}
</WrapperComponent>
);
}
}
这在某种程度上模仿了 Material UI MenuItem 的行为,就像我之前在评论中写的那样。
我想放 Link
这样我就可以在 React 中导航到其他页面。为什么这不是导航
代码
<StyledMenu
anchorEl={settingsMenu}
keepMounted
open={Boolean(settingsMenu)}
onClose={handleClose}>
<StyledMenuItem>
<ListItemIcon component={Link} to={`/accounts`}>
<PersonIcon />
</ListItemIcon>
<ListItemText primary="accounts" />
</StyledMenuItem>
<StyledMenuItem component={Link} to={`/orders`}>
<ListItemIcon>
<OrderIcon />
</ListItemIcon>
<ListItemText primary="Orders" />
</StyledMenuItem>
</StyledMenu>;
假设 <StyledMenuItem>
是您的自定义组件,您可以通过将整个 JSX 包装在 component
属性中来轻松地做到这一点。对于传递给它的其他道具(例如,to
),只需将它们解构并将它们作为道具放置到新包装器 component
.
import React, { Component } from "react";
export default class StyledMenuItem extends Component {
render() {
// simply checks to see if a component prop is passed
let WrapperComponent = this.props.component;
if (WrapperComponent === undefined) {
WrapperComponent = React.Fragment;
}
return (
<WrapperComponent {...this.props}>
{this.props.children}
</WrapperComponent>
);
}
}
这在某种程度上模仿了 Material UI MenuItem 的行为,就像我之前在评论中写的那样。