jsx-eslint/eslint-plugin-react

Add configuration for no-did-update-set-state to allow usage inside condition

Open

#2,021 opened on Oct 18, 2018

View on GitHub
 (6 comments) (17 reactions) (0 assignees)JavaScript (2,797 forks)batch import
enhancementhelp wanted

Repository metrics

Stars
 (8,630 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

As @gaearon has mentioned here and other places, using setState inside componenDidUpdate is acceptable, so long as it's within a conditional check.

Does it seem reasonable to allow a configuration option for this rule to allow setState usage within componenDidUpdate, so long as it's within a conditional check of some kind?

For example, this would pass here:

componentDidUpdate() {
  if (!this.state.isEnabled) {
    this.setState({ isEnabled: true })
  }
}

but this would still fail:

componentDidUpdate() {
  this.setState({ isEnabled: true })
}

An issue here would be that it's still not entirely guaranteed that more complex use cases wouldn't still end up in an infinite loop.

Contributor guide