我第一次用打字机。我已经制作了两页,详细页面包含了口袋妖怪的所有细节。但当我想进去的时候,我不能去。以下是我设置状态口袋妖怪的方法。接口
export interface IState {
id: string;
url: string;
pokemon: [];
}
我正在获取数据,并通过以下代码将其添加到状态中
public componentDidMount(): void {
axios
.get(`https://pokeapi.co/api/v2/pokemon/${this.state.id}`)
.then((data) => {
this.setState({ pokemon: data.data });
});
}
下面是我的json返回
{
"abilities": [
{
"ability": {
"name": "static",
"url": "https://pokeapi.co/api/v2/ability/9/"
},
"is_hidden": false,
"slot": 1
},
{
"ability": {
"name": "lightning-rod",
"url": "https://pokeapi.co/api/v2/ability/31/"
},
"is_hidden": true,
"slot": 3
}
],
"base_experience": 112
}
通过在组件内使用以下代码,我可以轻松访问base_experience
Experience Index: {this.state.pokemon.base_experience}
但我想访问能力并使用以下代码,但遇到错误
{this.state.pokemon['abilities'].map((ability)=>(
<p>{ability['ability']['name']}</p>
))}
我也使用了follow,但它也给出了同样的错误
{this.state.pokemon.abilities.map((ability)=>(
<p>{ability['ability']['name']}</p>
))}
还尝试了添加类型
ability: any
但仍然不起作用,也发生了变化
tsconfig.json
具有
"noImplicitAny": false
但仍然没有运气。我收到以下错误
TypeError: Cannot read property 'map' of undefined
但当我操作控制台时,它会显示列表。
我明白这是一个重复的问题,我已经看到了近10个答案,但无法解决。如果我能解决的话
console.log(this.state.pokemon['abilities']
它打印包含名称和url的整个数组。但当我试图绘制地图时,它并没有做到。