我尝试了材质表,并希望在操作中添加一个菜单项,以便它不会显示太多操作,例如编辑,删除。我在显示菜单项时遇到问题。
示例代码:
<MaterialTable
columns={[
{ title: t('customer'), field: 'name' },
{ title: t('email'), field: 'email' },
{ title: t('contactNumber'), field: 'contactNumber' },
{ title: t('status'), field: 'status' },
]}
data={list}
options={{
headerStyle: {
backgroundColor: '#00b7b2',
},
toolbar: false,
}}
actions={[
{
icon: 'menu',
tooltip: 'Menu',
onClick: (event, rowData) => {
this.openMenu(event)
},
},
]}
components={{
Action: props => (
<div>
<IconButton
onClick={(event) => props.action.onClick(event, props.data)}
>
<Icon>menu</Icon>
</IconButton>
<Menu
anchorEl={this.anchorEl}
open={Boolean(this.anchorEl)}
onClick={event => event.stopPropagation()}
onSelect={event => event.stopPropagation()}
onClose={this.closeMenu}
>
<MenuItem>
Action
</MenuItem>
</Menu>
</div>
),
}}
/>
我有解决方案吗?
答案 0 :(得分:3)
我成功地做到了这一点。基本上,您在正确的轨道上。
进行上述操作:
<MaterialTable
...
actions={[
{
icon: MenuIcon,
tooltip: 'Actions',
isFreeAction: false,
onClick: (event, row) => {
this.openMenu(event, row);
}
}
]}
...
/>
,然后在渲染中有一个单独的菜单项:
<Menu
id="simple-menu"
keepMounted
anchorEl={this.state.menuAnchor}
open={this.state.menuOpen}
onClose={this.handleMenuClose}
>
<MenuItem onClick={this.doSomething}>do something</MenuItem>
<MenuItem onClick={this.doSomethingElse}>do something else</MenuItem>
</Menu>
</center>
技巧是openMenu()应该首先获取当前目标:
openMenu(event, row) {
let anchorElement = event.currentTarget;
this.setState({currentRow: row}, () => {
this.setState({menuAnchor: anchorElement});
this.setState({menuOpen: true});
});
}
doSomething() {
row = this.state.currentRow;
// do something
}