【发布时间】:2019-08-04 02:43:02
【问题描述】:
我想在 componentDidMount 中使用 {this.state.whatever} 动态化 URL,但失败了。因为状态值是未定义的(我运行了console.log,错误也显示出来了)
我认为componentDidMount在状态重置后运行,所以我可以在URL中使用更新的状态但不起作用,我想知道为什么
state={ breed: "" }
async componentDidMount(){
try {
const res = await
fetch(`https://dog.ceo/api/breed/${this.state.breed}/images`);
const data = await res.json();
const imageUrl = data.message;
this.setState({
puppyImage: imageUrl
})
} catch (error) {
console.log(error);
}
}
onChangeHandler = event => {
this.setState({breed: event.target.value})
};
此 URL 不起作用,因为 {this.state.breed} 未定义,这意味着它尚未更新。
错误显示:
GET https://dog.ceo/api/breed//images 404
【问题讨论】:
-
this.state.bread是empty不是undefined -
componentDidMount在您安装组件时运行。当state或props更改时,它不会运行。请仔细阅读React文档reactjs.org/docs/state-and-lifecycle.html -
你需要的是
componentDidUpdate。 -
您好 Bowei,请参阅下面的解决方案,如果有帮助请告诉我。
-
感谢Tien的回复,我去看看你发的链接
标签: reactjs fetch-api dynamic-url