【发布时间】:2019-09-10 21:42:59
【问题描述】:
我从只需要两个数组的数据库中获取数据。使用两个变量,我得到了我需要的结果,但我明白,这段代码没有正确编写。连npm都写箭头函数应该返回一些东西,所以我加了“return false”;
let flagUrls = [];
let countryNames = [];
country.map((country, index) => {
flagUrls[index] = country.flagUrls;
countryNames[index] = country.countryNames;
return false;
});
this.setState({ flagUrls, countryNames });
我试过这样:
let flagsAndCountrys = country.map((country, index) =>[country.flagUrls, country.countryNames])
this.setState({
flagsAndCountrys.flagUrls,
flagsAndCountrys.countryNames
});
【问题讨论】:
-
这不是destructuring assigment 的真正问题,更多的是正确使用Array.prototype.map 的问题。 Array.prototype.map 需要一个 return 语句来创建一个新的转换结果数组。鉴于您正在尝试创建两 (2) 个数组,
map()可能不是正确使用的数组方法。您可能只使用forEach()甚至 for 循环。 -
也许您可以提供
country的数据外观以及您期望flagUrls和countryNames处理后的外观。 -
你为什么要分开我看到它,你必须保持两个数组同步,或者你是否对这两个列表做任何事情会导致它们不同步?就像改变一个数组,而不是另一个。如果没有,那就适得其反;您将数据结构更改为另一种更难以推理的数据结构。
-
正如@Thomas 建议的那样:您可能有一个XY problem,因为通常将相应的数据耦合到对象中是一件好事。
标签: javascript reactjs setstate