我正在构建一个显示来自 api 的一些数据的项目,现在我需要对其进行过滤。
我已经完成了类别过滤器,现在我必须做一个价格范围过滤器,以便这两个过滤器可以一起工作,但我正在努力如何正确地做到这一点。对于价格范围过滤器,我使用 2 个输入和一个提交按钮。
我得到了一组对象,看起来像这样;
filterData = [
{ name: 'Aang', bender: 'yes', nation: 'Air', person: 'yes', show: 'ATLA', price: 132342 },
{ name: 'Appa', bender: 'yes', nation: 'Air', person: 'no', show: 'ATLA', price: 1322 },
{ name: 'Asami', bender: 'no', nation: 'Republic City', person: 'yes', show: 'LOK', price: 132342 },
{ name: 'Azula', bender: 'yes', nation: 'Fire', person: 'yes', show: 'ATLA', price: 12342 }, etc]
我有状态:
state = {
data: [],
nation: '',
priceStart: '',
priceEnd: ''
}
如果我的弯曲器状态发生变化,则设置状态的函数还有用于开始和结束状态的类似函数当我为价格设置状态时,我解析它,所以我有一个状态,顺便说一句,每次我输入一些数字时我都会收到警告然后删除它,它说 Received a NaN for the 'value' 属性
chFilter = (type, val) => {
switch(type) {
case 'nation':
this.setState({ nation: val });
break;
case 'priceStart':
this.setState({ priceStart: val });
break;
case 'priceEnd':
this.setState({ priceEnd: val });
break;
default:
break;
}
}
getBenders = () => {
const { data, category, priceStart, priceEnd } = this.state;
if( nation || priceStart || priceEnd ){
return data.filter(this.filterBender);
} else {
return data;
}
}
filterBender = data => {
let { nation, priceStart, priceEnd } = this.state;
if(data.nation !== nation) return false;
if(data.price < priceStart) return false;
return true;
}
因为我认为我需要为所有状态执行一个通用函数,以便它可以观察状态的变化并返回过滤后的数据。帮助如何正确地做到这一点