为什么componentDidUpdate反复执行

时间:2019-12-03 04:06:21

标签: reactjs redux react-component react-lifecycle-hooks

我正在尝试显示有关提交的用户注释。在componentDidMount上,我正在向服务器发送GET请求以初始显示数据。当用户提交新评论时,在componentDidUpdate上,我正在检查prevState。如果发现任何差异,则应从服务器加载新数据。

但是在componentDidUpdate内部,连续请求正在发送到服务器。

到目前为止我所做的

componentDidUpdate(prevProps, prevState){
    if(prevState.status !== this.props.userDisplayNotes.status){

            // This is GET request to display the data from the server

            this.props.displayUserNotes(this.props.user_id)

    }
}


// Here I'm displaying data on initial rendering with GET request

componentDidMount(){
    this.props.displayUserNotes(this.props.user_id)
}

// This is form submit handler

handleSubmit = (e) => {      
    e.preventDefault();
    this.props.saveUserNote(this.props.user_id, this.state.userNote)

}

成功提交评论后,我收到来自服务器的回复,例如{“ status”:“ success”}

对于状态管理,我使用Redux。

但是在componentDidUpdate内部,它正在向服务器发送连续请求,导致应用程序崩溃。有人可以解释一下我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

您可以将以前的道具与新的道具进行比较,它将解决您的问题

componentDidUpdate(prevProps, prevState){
if(prevProps.userDisplayNotes.status !== this.props.userDisplayNotes.status){
        this.props.displayUserNotes(this.props.user_id)
  }
}