我正在尝试使用Reactjs从JSON数组中提取数据。到目前为止,我已经成功提取了不在数组内部的对象。但是如何从数组中提取项目?
答案 0 :(得分:0)
{this.state.data.stats.map(function (stat, i) {
return key={'stat-'+i}>{stat.base_stat}
这是错误的语法...试试这个:
{this.state.data.stats.map(function (stat, i) {
return <div key={'stat-'+i}>{stat.base_stat}</div>});
}
答案 1 :(得分:0)
我看了一下你正在尝试做的事情,我认为这是你正在尝试做的事情,或多或少:
class App extends React.Component {
constructor() {
super();
this.state = {
name: '',
height: '',
weight: '',
stats: [],
}
}
getData() {
return fetch('https://pokeapi.co/api/v2/pokemon/1.json')
.then((response) => response.json())
.then((responseJson) => {
const { name, height, weight, stats } = responseJson;
this.setState({ name, height, weight, stats });
})
.catch((error) => {
console.error(error);
});
}
componentDidMount() {
this.getData();
}
renderStats() {
return this.state.stats.map(s =>
<div key={s.stat.name}>
{s.stat.name}: {s.base_stat}
</div>)
}
render() {
return (
<div className="Info">
<div id="title" className="title">{this.state.name}</div>
<div id="parameters" className="parameters">
<tr><td>Height:</td> <td className="data">{this.state.height}</td></tr>
<tr><td>Weight:</td> <td className="data">{this.state.weight}</td></tr>
<br />
<div>Stats:</div>
<br />
</div>
<div id="stats" className="stats">
{this.renderStats()}
</div>
</div>
);
}
}
ReactDOM.render(<App />,
document.getElementById('root'))
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id='root'/>
&#13;
一些事情:
setState
。批量拨打电话。