【发布时间】:2020-12-27 11:51:19
【问题描述】:
我在通过嵌套数组locations 映射时遇到错误。以前这个逻辑是有效的,我认为数组类型是相同的,所以不知道为什么这不适用于这个 locations 数组。
错误:
Uncaught TypeError: this.state.locations.map is not a function
映射代码
<tbody>
{this.state.locations.map(location =>
<tr>
<td>
<Link to={`${this.state.tracker.key}/locations/`}>{location.name}</Link>
</td>
<td>{location.canal}</td>
<td>{location.closesttown}</td>
<td>{location.comment}</td>
</tr>
)}
</tbody>
这是未迭代的数组。
0: {key: "79", doc: e, name: "", canal: "", closesttown: "", comment: ""}
1: {key: "Nq", doc: e, name: "", canal: """", closesttown: "",comment: ""}
这是我可以正确映射的数组
0: {key: "Fr", doc: e, title: "Location", description: "My fav locations", author: "Gemma"}
1: {key: "G6", doc: e, title: "Gas", description: "Date of starting new gas cannister", author: "Gemma"}
2: {key: "za", doc: e, title: "", description: "", author: ""}
这是最初创建位置的地方:
this.state = {
tracker: {},
key: '',
locations: {},
};
这是我获取位置数据的地方:
onCollectionUpdate = (querySnapshot) => {
const locations = [];
querySnapshot.forEach((doc) => {
const { name, canal, closesttown ,comment } = doc.data();
locations.push({
key: doc.id,
doc, // DocumentSnapshot
name,
canal,
closesttown,
comment,
});
});
this.setState({
locations
});
}
【问题讨论】:
-
locations的初始值是多少?它是一个数组吗?你是如何在locations中设置数据的? -
@AjeetShah 我已经更新了这些详细信息(数组)
-
位置的初始值应该是空数组,
this.state = { tracker: {}, key: '', locations: [], };也是如此 -
哦,哇,我完全错过了!!!非常感谢!!!!!!
标签: javascript arrays reactjs