在 react-bootstrap-table2 上切换列
Toggle columns on 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
按预期触发。但是 table 本身不再是 hiding/showing 列。如果我删除我的功能,它会再次工作。
更新:
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
组件似乎不受控制。所以我建议使用官方文档中的 example。
使用这个库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
按预期触发。但是 table 本身不再是 hiding/showing 列。如果我删除我的功能,它会再次工作。
更新: 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
组件似乎不受控制。所以我建议使用官方文档中的 example。