React Material UI 删除选定的单元格
React Material UI Delete Selected Cells
我正在使用来自 material ui 的 table 示例。
这是link在线项目https://codesandbox.io/s/209kpmpvx0
该示例允许您为多行添加单元格,当您单击该行时会显示一个删除图标。
我希望能够在按下删除图标后打印出所有 selected 行。
这是 class 可以让你 select 一行。
class EnhancedTable extends React.Component {
constructor(props) {
super(props);
this.state = {
selected: [],
}
handleClick = (event, id) => {
const { selected } = this.state;
const selectedIndex = selected.indexOf(id);
let newSelected = [];
this.setState({ selected: newSelected });
};
我把下面的代码selectedId={selected.id}
放到了EnhancedTableHead
组件中。
return (
<Paper className={classes.root}>
<EnhancedTableToolbar numSelected={selected.length} />
<div className={classes.tableWrapper}>
<Table className={classes.table} aria-labelledby="tableTitle">
<EnhancedTableHead
numSelected={selected.length}
selectedId={selected.id}
order={order}
orderBy={orderBy}
onSelectAllClick={this.handleSelectAllClick}
onRequestSort={this.handleRequestSort}
rowCount={data.length}
/>
然后我将 selectedId
添加到 EnhancedTableToolbar
。我还在删除图标中添加了一个事件处理程序。
let EnhancedTableToolbar = props => {
const { numSelected, classes } = props;
return (
<Toolbar
className={classNames(classes.root, {
[classes.highlight]: numSelected > 0
})}
>
<div className={classes.title}>
{numSelected > 0 ? (
<Typography color="inherit" variant="subheading">
{numSelected} selected
</Typography>
) : (
<Typography variant="title" id="tableTitle">
Nutrition
</Typography>
)}
</div>
<div className={classes.spacer} />
<div className={classes.actions}>
{numSelected > 0 ? (
<Tooltip title="Delete">
<IconButton aria-label="Delete">
<DeleteIcon onClick={printdeletearray} />
</IconButton>
</Tooltip>
) : (
<Tooltip title="Filter list">
<IconButton aria-label="Filter list">
<FilterListIcon />
</IconButton>
</Tooltip>
)}
</div>
</Toolbar>
);
};
我收到一条错误消息,提示 selectedId 未定义。
const printdeletearray = () => {
console.log(this.state.selected);
};
我猜你犯了两个错误:
首先你应该在 <EnhancedTableToolbar />
中将 selected
作为 selectedId
道具传递:
<EnhancedTableToolbar
numSelected={selected.length}
selectedId={selected}
/>
第二个错误是你应该像这样将 selectedId
传递给 printdeletearray()
:
<DeleteIcon onClick={() => printdeletearray(selectedId)} />
这是你的 Demo
我正在使用来自 material ui 的 table 示例。
这是link在线项目https://codesandbox.io/s/209kpmpvx0
该示例允许您为多行添加单元格,当您单击该行时会显示一个删除图标。
我希望能够在按下删除图标后打印出所有 selected 行。
这是 class 可以让你 select 一行。
class EnhancedTable extends React.Component {
constructor(props) {
super(props);
this.state = {
selected: [],
}
handleClick = (event, id) => {
const { selected } = this.state;
const selectedIndex = selected.indexOf(id);
let newSelected = [];
this.setState({ selected: newSelected });
};
我把下面的代码selectedId={selected.id}
放到了EnhancedTableHead
组件中。
return (
<Paper className={classes.root}>
<EnhancedTableToolbar numSelected={selected.length} />
<div className={classes.tableWrapper}>
<Table className={classes.table} aria-labelledby="tableTitle">
<EnhancedTableHead
numSelected={selected.length}
selectedId={selected.id}
order={order}
orderBy={orderBy}
onSelectAllClick={this.handleSelectAllClick}
onRequestSort={this.handleRequestSort}
rowCount={data.length}
/>
然后我将 selectedId
添加到 EnhancedTableToolbar
。我还在删除图标中添加了一个事件处理程序。
let EnhancedTableToolbar = props => {
const { numSelected, classes } = props;
return (
<Toolbar
className={classNames(classes.root, {
[classes.highlight]: numSelected > 0
})}
>
<div className={classes.title}>
{numSelected > 0 ? (
<Typography color="inherit" variant="subheading">
{numSelected} selected
</Typography>
) : (
<Typography variant="title" id="tableTitle">
Nutrition
</Typography>
)}
</div>
<div className={classes.spacer} />
<div className={classes.actions}>
{numSelected > 0 ? (
<Tooltip title="Delete">
<IconButton aria-label="Delete">
<DeleteIcon onClick={printdeletearray} />
</IconButton>
</Tooltip>
) : (
<Tooltip title="Filter list">
<IconButton aria-label="Filter list">
<FilterListIcon />
</IconButton>
</Tooltip>
)}
</div>
</Toolbar>
);
};
我收到一条错误消息,提示 selectedId 未定义。
const printdeletearray = () => {
console.log(this.state.selected);
};
我猜你犯了两个错误:
首先你应该在 <EnhancedTableToolbar />
中将 selected
作为 selectedId
道具传递:
<EnhancedTableToolbar
numSelected={selected.length}
selectedId={selected}
/>
第二个错误是你应该像这样将 selectedId
传递给 printdeletearray()
:
<DeleteIcon onClick={() => printdeletearray(selectedId)} />
这是你的 Demo