目前我正在client = HTTPClient.new
url = "https://dummyurl.com"
headers = { "id": "x", "pass": "y" }
response = client.get(url)
生命周期功能中更新我的状态。但是由于该功能的性质,我的应用程序正在发送连续的GET请求,因此我不确定更新状态的哪个位置以便我可以避免这种情况。
以下是我的代码。
componentDidUpdate
答案 0 :(得分:2)
componentDidMount是AJAX调用的理想位置。它只在组件安装后立即运行一次,因此您可以避免通过从那里进行AJAX调用而创建的无限循环。
这是一篇很好的文章,解释了所有React生命周期钩子以及它们的用途:https://engineering.musefind.com/react-lifecycle-methods-how-and-when-to-use-them-2111a1b692b1
答案 1 :(得分:1)
componentDidUpdate
是一个做一个AJAX调用和更新状态的好地方,因为很好......每次组件更新时都会调用它(因此像this.setState({})这样的东西会触发它一遍又一遍)。
componentDidMount
或componentWillMount
是更好的地方,如果您希望在安装之前或组件安装完成后立即进行此调用。
编辑:看到您对另一个答案的评论后,您希望在点击后完成此操作,一旦已安装该组件。所以这是一个建议的解决方案:
getPosts () {
if(this.props.id){
if(!this.props.loadedPost || (this.state.loadedPost &&
this.state.loadedPost.ID !== this.props.id)){
axios.get('https://public-
api.wordpress.com/rest/v1.1/sites/ishhaanpatel.wordpress.com/posts/'+this.props.id)
.then( response => {
this.setState({ loadedPost: response.data });
});
}
}
}
handleClick (target, value) {
// do your magic
this.getPosts()
}