【发布时间】:2019-09-17 03:15:53
【问题描述】:
我是 React 的新手,我正在使用 PokeAPI 做一个小应用程序。我有一个名为 PokemonDetail 的组件,我想在其中显示一个 pokemon 的详细信息,但该应用程序向我抛出了下一个错误
TypeError: 无法读取未定义的属性“front_default”
我的组件如下所示:
import React from "react";
const PokemonDetail = ({ pokemon }) => {
return (
<div>
<div className="text-center">{pokemon.name}</div>
<img src={pokemon.sprites.front_default} alt={pokemon.name} />
{pokemon.id}
</div>
);
};
export default PokemonDetail;
PokemonDetail 接收 pokemon 道具的 App 组件如下所示:
import React from "react";
import PokeAPI from "../apis/PokeAPI";
import SearchBar from "./SearchBar";
import PokemonDetail from "./PokemonDetail";
class App extends React.Component {
state = { pokemon: '' };
onTermSubmit = async term => {
try {
const response = await PokeAPI.get(`pokemon/${term}`);
this.setState({ pokemon: response.data });
console.log(response);
} catch (error) {
console.log("No existe");
}
};
render() {
return (
<div className="container">
<div className="row mt-3">
<div className="col">
<SearchBar onFormSubmit={this.onTermSubmit} />
</div>
</div>
<div className="row mt-3">
<div className="col-9" />
<div className="col-3">
<PokemonDetail pokemon={this.state.pokemon} />
</div>
</div>
</div>
);
}
}
export default App;
我不明白为什么它会抛出这个错误,因为它只会抛出这个和 json 的其他属性。 name 属性有效,等到我向它发送一些道具,id 相同,但 front_default 属性没有,这是图像的 url。
【问题讨论】:
-
如果你知道'pokemon'变量会存储一个对象,不要给它分配一个空字符串。
标签: javascript ajax reactjs api