Почему я получаю эту ошибку, используя componentWillReceiveProps? - PullRequest
1 голос
/ 25 марта 2019

Ошибка получения: × Превышена максимальная глубина обновления. Это может произойти, когда компонент повторно вызывает setState внутри componentWillUpdate или componentDidUpdate. React ограничивает количество вложенных обновлений для предотвращения бесконечных циклов.

Пытался удалить деталь с ошибкой и setState (потому что это выглядит как причина бесконечного цикла). Не помогло

componentWillReceiveProps(nextProps){
    if(nextProps.auth.isAuthenticated){
        this.props.history.push('/dashboard')
    }
    // if(nextProps.errors){
    //     this.setState({
    //         errors: nextProps.errors
    //     })
    //     console.log('Error');
    // }
};

1 Ответ

3 голосов
/ 25 марта 2019

history.push вызывает повторное рендеринг, он вызывает componentWillReceiveProps и все идет по циклу.

Вместо этого используйте этот код:

componentDidUpdate(prevProps) {
  if (
      this.props.auth.isAuthenticated
      && this.props.auth.isAuthenticated !== prevProps.auth.isAuthenticated
  ) {
    this.props.history.push('/dashboard')
  }
}

Это может вызвать цикл, если выесть похожая ошибка где-то еще.

...