table
各行にmenu
ボタンが必要なリストがありますref
。プロジェクトで react mui を使用していますが、それはmenuです。私は次のような参照を作成しようとしました:
const {rows} = props;
const refs = Array.from({length: rows.length}, a => React.useRef<HTMLButtonElement>(null));
そして、各関数で次のmap
ように関数内を使用しようとしましたbutton
:
<Button
ref={refs[index]}
aria-controls="menu-list-grow"
aria-haspopup="true"
onClick={() => handleToggle(row.id)}
>Velg
</Button>
<Popper open={!!checkIfOpen(row.id)} anchorEl={refs[index].current} keepMounted transition disablePortal>
{({TransitionProps, placement}) => (
<Grow
{...TransitionProps}
style={{transformOrigin: placement === 'bottom' ? 'center top' : 'center bottom'}}>
<Paper id="menu-list-grow">
<ClickAwayListener onClickAway={(e) => handleClose(e, refs[index].current)}>
<MenuList>
<MenuItem
onClick={(e) => handleClose(e, refs[index].current)}>Profile</MenuItem>
<MenuItem onClick={(e) => handleClose(e, refs[index].current)}>My account</MenuItem>
<MenuItem onClick={(e) => handleClose(e, refs[index].current)}>Logout</MenuItem>
</MenuList>
</ClickAwayListener>
</Paper>
</Grow>
)}
</Popper>
しかし、その後、エラーが発生します:
React Hook "React.useRef" は、コールバック内で呼び出すことはできません。React Hooks は、React 関数コンポーネントまたはカスタム React Hook 関数で呼び出す必要があります react-hooks/rules-of-hooks
map 関数内で参照を使用できるように、これを動的に行うにはどうすればよいですか。回答の提案を試してみましたが、うまくいきませんでした。これが例のコードサンドボックスです。