reactjs - Table - Ant Design - 在 Virtual table ant 设计中实现过滤器
问题描述
在 ant 设计的虚拟表中实现过滤器时遇到了一些麻烦。当我在列配置上应用过滤器但不工作时。
有没有人对此有一些解决方案?
感谢您阅读本文。
解决方案
是的...
经过 5 个小时的研究,我编写了一些代码来应用它。但我对速度和性能并不满意。
关于虚拟表ant table的代码,请参见:Virtual table - Ant design
//ES6
import React from 'react';
import _ from 'lodash';
import VirtualTable from './virtualTable';
function compareData(filters, record) {
return new Promise((resolve, reject) => {
let compared_result = true;
(async () => {
await _.each(filters, (valueFilter, keyFilter) => {
if(valueFilter !== null && valueFilter.length !== 0) {
if(compared_result == true) {
if(_.indexOf(valueFilter, record[keyFilter]) == -1) {
compared_result = false
}
}
}
})
if(compared_result == true) {
resolve(record);
}
else {
resolve(undefined)
}
})();
});
}
class MoreDataTable extends React.Component {
state = {
dataSource: [],
dataRaw:[]
}
constructor(props) {
super(props);
this.state.dataSource = props.dataSource;
this.state.dataRaw = props.dataSource;
}
handleEventChangeTableData = (pagination, filters, sorter, extra) => {
let dataResult = [...this.state.dataRaw];
//adding something like sorter, pagination if you want
(async () => {
if(_.size(filters) > 0) {
const result = await _.map(dataResult, record => {
return compareData(filters, record);
})
Promise.all(result).then(value => {
this.setState({ dataSource: _.without(value, undefined)});
})
}
})()
}
render() {
const props = {
...this.props,
dataSource: this.state.dataSource
}
return (
<VirtualTable {...props} onChange={(pagination, filters, sorter, extra) => this.handleEventChangeTableData(pagination, filters, sorter, extra)} />
)
}
}
export default MoreDataTable;
使用组件 MoreDataTable
<MoreDataTable
dataSource={this.state.dataReport}
columns={columns}
loading={true} />
推荐阅读
- java - 如何在android java中检测editText中的url
- miniconda - miniconda3文件夹中bin目录和pkgs目录的区别
- c# - Avalonia 的 PropertyChangedNotifier?
- common-lisp - 如何从列表中生成 HTML
- join - 在 Redshift 中卸载涉及连接的查询
- javascript - How to disable the button(should not do anything) if either of input is empty?
- python - How to solve UFuncTypeError?
- discord-jda - How to make junit test for onPrivateMessageEvent() on jda
- postgresql - Grouping into interval of 2 hours in Postgres
- sql - recursive query sqlite3.OperationalError: near "SELECT": syntax error