我正在尝试react-bootstrap-table
通过将 row.id 与数据库中的 item.id 进行比较来有条件地呈现按钮。
我设法通过使用dataFormat
道具添加了一个按钮,但是我无法有条件地显示一个按钮
- 我正在使用该表来显示从数据库中获取的组。
- 获取所有组后,我会将它们的 id (row.id) 与数据库中的组进行比较。
- 如果他们匹配我显示
Button1
- 如果他们不匹配我显示
Button2
我尝试了很多尝试,但我的解决方案没有给我想要的结果
这是我的代码:
- 如果我在数据库中已经有 8 个组,那么 8 个组的按钮应该使用
red
与其他按钮不同的文本。 如果该组不在数据库中,它的按钮应该是
blue
class App extends Component { constructor() { super() this.state = { json: [], // json(coming from the Meetup-api) jsonFromDatabase: [], } this.cellButton = this.cellButton.bind(this); } cellButton(cell, row, enumObject, rowIndex) { let theButton for(var group in this.state.jsonFromDatabase){ if (this.state.jsonFromDatabase[group].id !== row.id){ // Display this button if the group is not in the database theButton = <button style={{ backgroundColor: "blue"}} type="button" onClick={() => this.onClickGroupSelected(cell, row, rowIndex)}> Process the group </button> } else { // Display this button if the group is already in the database theButton = <button style={{ backgroundColor: "red" }} type="button" onClick={() => this.onClickGroupToUpdate(cell, row, rowIndex)}> Update the group </button> } } return theButton } render() { return ( <BootstrapTable data={this.state.json} options={ this.options } > <TableHeaderColumn isKey dataField='id' width='100'>ID</TableHeaderColumn> <TableHeaderColumn dataField='name' width='300'>Group Name</TableHeaderColumn> <TableHeaderColumn dataField='button' width='100' dataFormat={this.cellButton}>Generate Group Page</TableHeaderColumn> </BootstrapTable> ) } }
我尝试的另一个不成功的变体:
cellButton(cell, row, enumObject, rowIndex) {
let theButton
Object.keys(this.state.jsonFromDatabase).map((key) => {
if (this.state.jsonFromDatabase[key].id !== row.id){
return (
<button style={{ backgroundColor: "blue"}}
type="button"
onClick={() => this.onClickGroupSelected(cell, row, rowIndex)}>
Process the group
</button>
)
} else {
....
....
}
})
}