【发布时间】:2018-02-21 16:01:39
【问题描述】:
我正在使用 React Table 来显示我从 API 调用收到的数据。目前我在本地保存状态,表格显示数据。我为两列添加了列值过滤。我的过滤逻辑如下:
<ReactTable
data={tableData}
noDataText="Loading.."
filterable
defaultFilterMethod={(filter, row) =>
String(row[filter.id]) === filter.value}
};
}}
columns={[
{
columns: [
{
Header: 'Name',
accessor: 'Name',
id: 'Name',
Cell: ({ value }) => (value === 'group1' ?
'group1' : 'group2'),
filterMethod: (filter, row) => {
if (filter.value === 'all') {
return true;
}
if (filter.value === 'group1') {
return row[filter.id] === 'group1';
}
if (filter.value === 'group2') {
return row[filter.id] === 'group2';
}
},
Filter: ({ filter, onChange }) =>
<select
onChange={event => onChange(event.target.value)}
style={{ width: '100%' }}
value={filter ? filter.value : 'all'}
>
<option value="all">All</option>
<option value="group1">Group1</option>
<option value="group2">Group2</option>
</select>,
},
}
到目前为止,过滤规则是在两个值之间硬编码的。如何实现过滤器逻辑以使过滤是动态的?(如果特定列中有 3 或 7 个不同的值,则下拉列表应显示所有 7 个值,并且过滤器应根据所选的任何值工作)。因为我使用 React Table(https://react-table.js.org)。
【问题讨论】:
-
@SeaWarrior404..这是什么“返回行[filter.id] ==='group2';”返回,理想情况下它应该返回true或false..我怀疑它返回布尔值或任何值....请澄清
-
这个问题还没有解决吗?未解决?您似乎已经转向其他问题,但这里没有回应.. 为什么?如果我建议的答案不起作用,也许您现在自己已经有了答案,您可以回答自己的问题并接受它:stackoverflow.com/help/self-answer
标签: javascript reactjs web html-table