Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ReactJS-尽管进行了条件检查,但超过了最大更新深度时出错_Reactjs - Fatal编程技术网

ReactJS-尽管进行了条件检查,但超过了最大更新深度时出错

ReactJS-尽管进行了条件检查,但超过了最大更新深度时出错,reactjs,Reactjs,在我的componentDidUpdate方法中包含以下代码后,我开始出现错误:超出了最大更新深度。。我的目标是在每次更新selectedDate时过滤数组'AppointsByMonth',并使用结果值设置状态。我做错了什么?谢谢你的帮助。提前谢谢 componentDidUpdate = (prevState) => { const { selectedDate } = this.state; const { appointmentsByMonth }

在我的componentDidUpdate方法中包含以下代码后,我开始出现错误:超出了最大更新深度。。我的目标是在每次更新selectedDate时过滤数组'AppointsByMonth',并使用结果值设置状态。我做错了什么?谢谢你的帮助。提前谢谢

    componentDidUpdate = (prevState) => {
      const { selectedDate } = this.state;
      const { appointmentsByMonth } = this.props;

      if (selectedDate !== prevState.selectedDate) {
        this.setState({visibleAppointments: appointmentsByMonth.filter(apt => moment(apt.date).format('YYYY-MM-DD') === moment(selectedDate).format('YYYY-MM-DD'))})
    }
}
componentDidUpdate的签名为:

prevState是第二个位置参数,在本例中,您使用的是prevProps


问题是,您正在更新一个条件中的状态,而这个条件每次都被证明是真的,它会导致无限循环
componentDidUpdate(prevProps, prevState, snapshot) {}
componentDidUpdate = (prevProps, prevState) => {
      const { selectedDate } = this.state;
      const { appointmentsByMonth } = this.props;

      if (selectedDate !== prevState.selectedDate) {
        this.setState({visibleAppointments: appointmentsByMonth.filter(apt => moment(apt.date).format('YYYY-MM-DD') === moment(selectedDate).format('YYYY-MM-DD'))})
    }