ComponentDidUpdate无法正常工作

时间:2020-10-15 14:40:35

标签: reactjs

我正在尝试在setState中进行componentDidUpdate。 我做了一些研究,读到我必须在制作setState之前放置一些条件,这样它才不会创建永远的循环,但无法正常工作。

有什么建议吗?

这是我的代码

 componentDidUpdate() {
const { isAuthenticated, navigation,actions } = this.props;
try {
  if (isAuthenticated) {
    navigation.navigate({ routeName: 'AlternatePhrase' });
    this.setState({isCreating:false})
  }
} catch (e) {
    console.log('--------e', e);
}
}

我收到此错误:

Error: Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.

1 个答案:

答案 0 :(得分:1)

检出docs for componentDidUpdate,您会看到您有权访问prevProps。避免循环的condition是检查isAuthenticated是否在更新过程中进行了更改,并且只有在更改时才进行更改,然后继续执行流程:

componentDidUpdate(prevProps) {
  const { isAuthenticated, navigation } = this.props;
  if (prevProps.isAuthenticated !== isAuthenticated) {
    try {
      if (isAuthenticated) {
        navigation.navigate({ routeName: 'AlternatePhrase' });
        this.setState({isCreating:false})
      }
    } catch (e) {
      console.log('--------e', e);
    }
  }
}