我目前正在与 anchorRef 斗争,我不完全确定它是如何工作的,因为我是新来的反应并且以前从未使用过它。因此,当调用 onClickAway 方法时,我从材质 UI 收到此错误,该方法仅将 anchorRef 设置为 null 尽管此警告仅在之后渲染组件后出现一次,但我没有再次收到警告???我尝试了 useEffect 以便在加载组件时将值设置为 null 但它不起作用。请任何帮助将不胜感激。
Failed prop type: Material-UI: the `anchorEl` prop provided to the component is invalid.
It should be an HTML element instance or a referenceObject
表格组件
export default function TestTable() {
const [data, setData] = useState([
{
val1: 'test1',
val2: 'test2',
val3: 'test3',
val4: 'test4',
val5: 'test5',
},
{
val1: 'test1',
val2: 'test2',
val3: 'test3',
val4: 'test4',
val5: 'test5',
},
{
val1: 'test1',
val2: 'test2',
val3: 'test3',
val4: 'test4',
val5: 'test5',
}
]);
const [open, setOpen] = React.useState(false);
const [anchorRef, setAnchorRef] = useState(null);
const handleMenuToggle = (event) => {
setAnchorRef(event.currentTarget);
setOpen((prevOpen) => !prevOpen);
}
const handleMenuClose = (event) => {
if (anchorRef) {
setAnchorRef(null);
}
setOpen(false);
}
const method1 = () => {
handleMenuClose()
}
return (
<TableContainer component={Paper}>
<Table aria-label="bids table" size="small">
<TableHead>
<TableRow>
<TableCell align="left">Header1</TableCell>
<TableCell align="left">Header2</TableCell>
<TableCell align="left">Header3</TableCell>
<TableCell align="left">Header4</TableCell>
<TableCell align="left">Header5</TableCell>
<TableCell align="left"></TableCell>
</TableRow>
</TableHead>
<TableBody>
{data.map((row, index) => (
<TableRow key={index}>
<TableCell>{row.val1}</TableCell>
<TableCell>{row.val2}</TableCell>
<TableCell>{row.val3}</TableCell>
<TableCell>{row.val4}</TableCell>
<TableCell>{row.val5}</TableCell>
<TableCell className="pr-0" style={{width: '5%'}}>
<IconButton aria-label="options"
onClick={(e) => handleMenuToggle(e)}>
<MoreVertIcon />
</IconButton>
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
<Popper open={open} anchorEl={anchorRef} role={undefined} transition disablePortal>
{({ TransitionProps, placement }) => (
<Grow
{...TransitionProps}
style={{
transformOrigin: placement === 'bottom' ? 'center top' : 'center bottom',
}}
>
<Paper>
<ClickAwayListener onClickAway={handleMenuClose}>
<MenuList id="split-button-menu">
<MenuItem onClick={method1}>
Menu Opt1
</MenuItem>
<MenuItem onClick={method1}>
Menu Opt1
</MenuItem>
<MenuItem onClick={method1}>
Menu Opt3
</MenuItem>
</MenuList>
</ClickAwayListener>
</Paper>
</Grow>
)}
</Popper>
</TableContainer>
)