reactjs - 口袋妖怪,API调用变量不保存
问题描述
我正在尝试制作一个仅显示某个口袋妖怪名称并使用 Pokeapi 获取图片的程序。但似乎在我的 pokeURL 变量退出 $.getJSON 函数后,它会将自身重置为 null。
import React from "react"
import $ from "jquery"
class Pokemon extends React.Component{
constructor(props){
super()
this.state = {
imageUrl: ""
}
}
componentDidMount() {
let pokeURL
this.setState(()=>{
$.getJSON("https://pokeapi.co/api/v2/pokemon/" + (this.props.pokemon).toLowerCase() + "/", function(data){
pokeURL = data.sprites.front_default;
// console.log(pokeURL)
// console.log(data)
})
// console.log(pokeURL)
return {
imageUrl: pokeURL
}
})
}
render(){
return(
<div>
<h1>{this.props.pokemon}</h1>
<img src={this.state.imageUrl} height = "400px" width = "400px"/>
</div>
)
}
}
export default Pokemon
我看着我的控制台,我收到了 pokemon api 调用,但它只是没有保存到变量中。我尝试使用 let 并将其设置为全局变量,但它似乎只是重置。注意:道具中只有一个口袋妖怪字符串,这是我要绘制的名称。
解决方案
试试这个 :
$.getJSON("https://pokeapi.co/api/v2/pokemon/" + (this.props.pokemon).toLowerCase() + "/", function(data){
this.setState({
imageUrl : data.sprites.front_default;
})
})
推荐阅读
- javascript - 如何使用 JavaScript 更改输出文本的值 - 返回不是更新字段的值,而是显示字段中的值
- python - 有没有办法可以为生成的子图添加标题和标签?
- excel - 如何在查找框中获得通过错误消息?
- javascript - 如何设置axios超时
- angular - PrimeNG 添加自定义标题文本
- android - Android 12 飞溅白色背景
- visual-studio-code - 无论如何在关闭内核之前将环境变量保存在vscode jupyter中?
- r - ggcorrplot,多列,按因子分组
- c# - 如何在应用程序中提供虚拟目录路径
- sql - 在运行时使用 JDBCTemplate 创建表