问题
Receive 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.
Tried to delete part with error and setState (because it looks like the reason of infinite loop). Didn't help
componentWillReceiveProps(nextProps){
if(nextProps.auth.isAuthenticated){
this.props.history.push('/dashboard')
}
// if(nextProps.errors){
// this.setState({
// errors: nextProps.errors
// })
// console.log('Error');
// }
};
回答1:
history.push
causes a rerender, it calls componentWillReceiveProps
and everything goes in a loop.
Use this code instead:
componentDidUpdate(prevProps) {
if (
this.props.auth.isAuthenticated
&& this.props.auth.isAuthenticated !== prevProps.auth.isAuthenticated
) {
this.props.history.push('/dashboard')
}
}
This can still cause a loop if you have a similar mistake somewhere else.
来源:https://stackoverflow.com/questions/55344068/why-i-receive-this-error-using-componentwillreceiveprops