在ReactJS中更新状态的最佳位置是什么?

时间:2018-01-29 02:01:58

标签: reactjs lifecycle setstate

目前我正在client = HTTPClient.new url = "https://dummyurl.com" headers = { "id": "x", "pass": "y" } response = client.get(url) 生命周期功能中更新我的状态。但是由于该功能的性质,我的应用程序正在发送连续的GET请求,因此我不确定更新状态的哪个位置以便我可以避免这种情况。

以下是我的代码。

componentDidUpdate

2 个答案:

答案 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({})这样的东西会触发它一遍又一遍)。

componentDidMountcomponentWillMount是更好的地方,如果您希望在安装之前或组件安装完成后立即进行此调用。

编辑:看到您对另一个答案的评论后,您希望在点击后完成此操作,一旦已安装该组件。所以这是一个建议的解决方案:

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() 
 }