我在桌上使用下拉菜单。我可以获得注册号。但是,无论打开哪个记录,菜单都会打开,直到记录数为止。
将记录数添加到菜单中。
尽管有4个菜单,但我正在尝试输入条目数增加,但无法解决问题
你能帮助我吗 ?
this.state = {
table_dropdownOpen: false, //modalform açık mı kapalı mı ?
};
this.table_dropdownToggle = this.table_dropdownToggle.bind(this);
table_dropdownToggle () {
this.setState(prevState => ({
table_dropdownOpen: !prevState.table_dropdownOpen,
}));
};
render() {
const { isLoaded, items } = this.state;
if (!isLoaded) {
return <div>Loading...</div>;
} else {
return (
<div className={"animated fadeIn container-fluid"}>
<Row>
<Col>
<Card>
<CardHeader>
<i className="fa fa-align-justify" /> Customer Debt
</CardHeader>
<CardBody>
<Table hover bordered striped responsive size="sm">
<thead>
<tr>
<th width={"10"} />
<th width={"15"}>No</th>
<th style={{ display: "none" }}>User</th>
<th style={{ display: "none" }}>Key</th>
<th style={{ display: "none" }}>CreatedUserKey</th>
<th width={"40"}>Total debt</th>
<th width={"40"}>Received amount</th>
<th scope={"row"}>Description</th>
<th width={"20"}>Payment Date</th>
</tr>
</thead>
<tbody>
{items.map(item => {
return (
<tr key={item.id}>
<td >
<ButtonDropdown
isOpen={ this.state.table_dropdownOpen }
toggle={ this.table_dropdownToggle }
onClick={ () => console.log(item.id) } >
<DropdownToggle caret >
Process
</DropdownToggle>
<DropdownMenu>
<DropdownItem >New record</DropdownItem>
<DropdownItem >Print all</DropdownItem>
<DropdownItem>Another Action</DropdownItem>
<DropdownItem divider />
<DropdownItem>Another Action</DropdownItem>
</DropdownMenu>
</ButtonDropdown>
</td>
<td>{item.id}</td>
<td style={{ display: "none" }}>{item.user}</td>
<td style={{ display: "none" }}>{item.debtKey}</td>
<td style={{ display: "none" }}> {item.createduserKey} </td>
<td>{item.totalDebt}</td>
<td>{item.receivedAmount}</td>
<td>{item.description}</td>
<td>{new Date(item.paymentDate).toLocaleString()}</td>
</tr>
)
})}
</tbody>
</Table>
</CardBody>
</Card>
</Col>
</Row>
</div>
);
}
}
}
每个下拉列表都与绑定this.state.table_dropdownOpen
,因此如果其中一个打开,则它们都是打开的。为了使它起作用,您需要一个状态变量来保存所有打开的值。我会为此使用地图:
this.state = {
tableDropDownMap: new Map()
};
...
//component did mount, initialize the map
let updatedMap = new Map()
items.forEach(item => updatedMap.set(item.id, false)
...
<ButtonDropdown
isOpen={ this.state.tableDropDownMap.get(item.id) }
onClick={ () => console.log(item.id) } >
然后在您的onClick中,您最终会得到类似(自从我使用类组件以来已经有一段时间了,所以setState可能不正确,但是您将获得要点。
onClick={() => {
let updatedMap = new Map(tableDropDownMap)
updatedMap.set(item.id, !updatedMap.get(item.id))
this.setState({tableDropDownMap: updatedMap})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句