【发布时间】:2019-09-20 12:01:54
【问题描述】:
在 React 中我有:
state = {
Producers: [],
France: [],
Spain: [],
Germany: [],
Portugal: [],
Greece: [],
Austria: [],
isLoading: false
};
生产者数组:
{
"_id" : ObjectId("5cc0bf1815cc7a2225edab0b"),
"Code" : "FPG-BCH14",
"URL" : "/jSQcl",
"Just_In" : "",
"Country" : "France",
"Region" : "Burgundy"
},
{
"_id" : ObjectId("5cc0bf1815cc7a2225edab0c"),
"Code" : "FPG-CHA17",
"URL" : "/XPxx",
"Just_In" : "",
"Country" : "France",
"Region" : "Burgundy"
},
{
"_id" : ObjectId("5cc0bf1815cc7a2225edab0d"),
"Code" : "FPG-BPN16",
"Just_In" : "",
"Country" : "France",
"Region" : "Burgundy"
},
{
"_id" : ObjectId("5cc0bf1815cc7a2225edab0e"),
"Code" : "PAP-VIN17",
"Country" : "Portugal",
"Region" : "Vinho Verde",
"Subregion" : "Lima"
}
现在我在state.Producers 中有所有对象,我想放置任何具有state.Producers.Country === "France" 值的对象(所有国家/地区等等)。
这就是我设置状态的方式:
loadProducers = () => {
API.getProducers()
.then(res =>
this.setState({Producers: res.data})
)
.catch(err => console.log(err));
}
所以我想在为生产者设置状态后,我需要另一个 .then 声明,然后为每个国家/地区设置 .filter,但我似乎无法让它发挥作用。
【问题讨论】:
-
你能发布一个你的数据结构是如何设置的例子吗? (
res.data对象) -
请把你的问题澄清一下,比如你到底想达到什么目标,你想如何比较?
-
通常最好不要像这样复制状态。如果
Producers已经拥有所有数据,只需在渲染前对其进行过滤:const france = state.producers.filter(p => p.Country === "France") -
谢谢@RobertMennell @BrunoMonteiro,我正在努力进一步理解这一点......我已经编辑了我上面的问题以包含
state.Producers数组中的内容的示例。非常感谢所有输入!
标签: javascript arrays reactjs filter