【发布时间】:2018-12-05 19:34:36
【问题描述】:
我是 React 和 JSON 的新手,所以我在获取 JSON 信息并将其放在我项目的 Select 内的 Option 标记上时遇到了一些麻烦。我做错了什么?
这是我的代码:
componentWillMount() {
this.fetchData();
}
fetchData() {
fetch("https://grupoprever-api.qap/listas/estados", { mode: "cors" })
.then(response => response.json())
.then(parsedJSON => {
parsedJSON.map(estado => ({
v: `${estado.key}`,
d: `${estado.value}`
}));
})
.then(estados =>
this.setState({
estados
})
)
.catch(error => console.log("Erro no Fetch:", error));
}
我正在尝试将这些信息放在这里:
<div className="meioCampo">
<span>Estado:</span>
<select
id="estadosDropdown"
onChange={e => this.setState({ escolhidoEstado: e.target.value })}
>
{this.state.estados.map(estado => {
return (
<option key={estado.v} value={estado.v}>
{estado.d}
</option>
);
})}
</select>
</div>
所有这些都在一个组件内。
哦,我的JSON数据是这样的:
{
"AC":"Acre",
"AL":"Alagoas",
"AM":"Amaz\u00f4nia"
}
【问题讨论】:
-
您遇到了什么错误? api调用的数据响应有什么格式?
-
@MikeAbeln 嘿伙计!我有这个: TypeError: "parsedJSON.map is not a function" 。我的 JSON 数据是这样的: {"AC":"Acre","AL":"Alagoas","AM":"Amaz\u00f4nia"}
-
啊!您正在尝试迭代一个对象 - 这是不可迭代的。
.map函数在Array数据类型上运行,并按顺序为每个项目运行一些代码。您的 JSON 对象是一个Object数据类型——它没有顺序并且不能被映射。 -
@MikeAbeln 哇! D:那是真的。有没有办法像这个 json 那样做,或者我应该在数组中组织这些信息?