【发布时间】:2020-10-20 01:19:03
【问题描述】:
我有一个用图标和文本呈现 Material UI MenuItem 的组件:
export default class ProjectMenuItem extends Component {
render() {
return (
<MenuItem onClick={this.props.onClick}>
<ListItemIcon>{this.props.iconComponent}</ListItemIcon>
<ListItemText primary={this.props.text} />
</MenuItem>
);
}
}
这很好用。 我很难理解的是为什么我会收到 警告:函数组件不能被赋予 refs。尝试访问此 ref 将失败。 如果我将此组件更改为功能组件:
export const ProjectMenuItem = ({ onClick, iconComponent, text }) => {
return (
<MenuItem onClick={onClick}>
<ListItemIcon>{iconComponent}</ListItemIcon>
<ListItemText primary={text} />
</MenuItem>
);
};
父组件:
<StyledMenu
id='customized-menu'
anchorEl={anchorEl}
keepMounted
open={Boolean(anchorEl)}
onClose={handleClose}>
{projectMenuItens.map((menuItem, i) => (
<ProjectMenuItem
key={i}
onClick={menuItem.onClick}
text={menuItem.text}
iconComponent={menuItem.iconComponent}
/>
))}
</StyledMenu>
完整的警告是:
警告:函数组件不能被赋予 refs。尝试访问 这个裁判会失败。你的意思是使用 React.forwardRef() 吗?检查
ForwardRef(Menu)的渲染方法。
【问题讨论】:
-
检查这个github.com/mui-org/material-ui/issues/…。它可能会解决您的问题。
标签: reactjs material-ui