reactjs - 确保在过滤方法之前初始化数据
问题描述
尝试根据此答案对数据表进行过滤:使用 react-data-table-component 进行数据表过滤
筛选成功。但是在过滤之前,this.filteredItems 是没有定义的。
- 如果我使用 data=
{this.filteredItems}
,它将显示 undefined 但一旦我过滤,数据将开始显示 - 如果我使用
data={result}
,它将显示所有结果但不允许我过滤
class Table extends React.Component {
... ommitted irrelevant codes
render() {
const result = this.props;
const getSubHeaderComponent = () => (
<FilterComponent
onFilter={(e) => {
const newFilterText = e.target.value;
this.filteredItems = result.filter( //Filtering works with this.filteredItems
item => item.name
&& item.name.toLowerCase().includes(newFilterText.toLowerCase())
);
this.setState({ filterText: newFilterText });
}}
onClear={this.handleClear}
filterText={this.state.filterText}
/>
);
return (
<React.Fragment>
<DataTable
columns={columns}
data={this.filteredItems} // Only if i filter, then data will appear. Else it will be undefined because the original data is from result
subHeader
subHeaderComponent={getSubHeaderComponent()}
/>
</React.Fragment>
);
}
}
解决方案
所以你可以有条件地提供数据
<DataTable
columns={columns}
data={this.filteredItems ? this.filteredItems : result}
subHeader
subHeaderComponent={getSubHeaderComponent()}
/>
推荐阅读
- angular - 如果存在,则获取数组中第一项的属性
- apache-spark - 块大小无效或太大 - 无法读取 Avro 文件
- python - 匹配除三个连续双引号外的所有内容
- python - HOGDescriptor 返回错误:img.type() == 0 || img.type() == (((0) & ((1 << 3) - 1)) + (((3)-1) << 3)) 在函数 cv::HOGDescriptor::computeGradient
- vector - 为什么擦除函数会产生运行时错误?
- c# - Xamarin iOS SslStream.AuthenticateAsUser() 返回异常“未知安全传输错误‘PeerHandshakeFail’。”
- python - 在flask-sqlalchemy中从用户中选择id
- python - 在 pyqt5 的 btn.clicked.connect() 方法中返回一个变量
- android - Dagger 组件:错误:找不到符号 kotlin 类
- regex - 正则表达式匹配 - 仅当 4 个字符长且不包含特定单词时