reactjs - 在 react-bootstrap-table2 上切换列
问题描述
使用这个库https://react-bootstrap-table.github.io/react-bootstrap-table2/
关于列切换的文档:https ://react-bootstrap-table.github.io/react-bootstrap-table2/docs/basic-column-toggle.html
我需要知道隐藏了哪些列。
为此包括一个回调:
onColumnToggle: Call this method when user toggle a column.
实施的:
<ToolkitProvider
keyField="globalId"
data={ this.props.data }
columns={ this.state.columns }
columnToggle
>
{
props => {
return (
<>
<ToggleList {...props.columnToggleProps} onColumnToggle={this.columnToggle} className="d-flex flex-wrap"/>
<hr/>
<BootstrapTable
striped
bootstrap4
keyfield="globalId"
{...props.baseProps}
/>
</>
)
}
}
</ToolkitProvider>
我的函数this.columnToggle
按预期触发。但表格本身不再隐藏/显示列。如果我删除我的功能,它会再次起作用。
更新: columnToggle 函数:
columnToggle = (column) => {
console.log(column); // outputs the toggled column
};
解决方案
使用ToggleList
render props 设计模式,因此它会发送原始文件onColumnToggle
和props
您在组件上传播的内容ToggleList
,而且您提供了自己的onColumnToggle
函数副本,这将覆盖预期结果。
一个简单的解决方案,因此您可以通过执行以下操作来利用这两个功能(onColumnToggle
组件的实际功能和您的副本):
<ToggleList {...props.columnToggleProps} onColumnToggle={() => {this.columnToggle(); props.columnToggleProps.onColumnToggle(/* whatever params it needs */)}} className="d-flex flex-wrap"/>
这将允许您在列切换时执行自定义操作,并且您仍然拥有ToggleList
API 的原始功能。
编辑:这个解决方案的问题是,该ToggleList
组件似乎不受控制。所以我建议使用官方文档中的这个例子。
推荐阅读
- reactjs - 验证后如何重定向到另一个页面?并且还想将值传递到下一页
- python - 使用公共密钥在数据帧上广播系列乘法
- node.js - 连接到通过 IPv4 运行的服务器时出现长时间延迟
- excel - 如何检查单元格是否包含多个值之一,如果这些列都包含任一值,则如何更改另一个单元格
- html - 在同一段落中为罗马和斜体文本使用不同大小的字体
- ios - 在用户的文档文件夹中创建一个新的子文件夹会创建一个文件
- node.js - Discord Music 机器人随机抛出此错误,显然没有挑衅
- python - 递归生成器说明
- reactjs - 如何部署具有代码拆分功能的 JS 应用程序,确保过去的应用程序版本不会中断
- svelte - Storybook 不会加载简单的组件