我正在构建一个项目,该项目显示来自 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]
Run Code Online (Sandbox Code Playgroud)
我有状态:
state = {
data: [],
nation: '',
priceStart: '',
priceEnd: '' …Run Code Online (Sandbox Code Playgroud) 我正在获取状态中的对象数组,并且尝试为每个对象添加一个属性。
问题是我可以看到我的属性被添加到每个对象中,但是当我映射所有这些对象并尝试console.log它时,我得到了undefined
添加属性
addFavourites() {
let data = this.state.data.map((e) => {
e.favourite = false;
return e;
});
return data;
}
Run Code Online (Sandbox Code Playgroud)
state = {
data: []
}
Run Code Online (Sandbox Code Playgroud)
addFavourites 在这里被调用:
getItem = () => {
this.service
.mergeData()
.then((body) => {
this.setState({
data: body
},
() => {
this.addFavourites();
},
() => {
this.dataToFilter();
});
});
}
componentDidMount(){
this.getItem();
}
Run Code Online (Sandbox Code Playgroud)
在渲染功能中,我可以看到所有对象,包括最喜欢的对象
console.log(data.map((e) => e));
Run Code Online (Sandbox Code Playgroud)
但这给出了一个未定义的数组
console.log(data.map((e) => e.favourite));
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?