JS.REACT.STATE.IN.CONSTRUCTOR

State initialization in an ES6 class component should be in a constructor

This rule will enforce the state initialization style to be either in a constructor or with a class property.

Rule Options

Copy
...
"react/state-in-constructor": [<enabled>, <mode>]
...

always mode

Will enforce the state initialization style to be in a constructor. This is the default mode.

Examples of incorrect code for this rule:

Copy
class Foo extends React.Component {
  state = { bar: 0 }
  render() {
    return <div>Foo</div>
  }
}

Examples of correct code for this rule:

Copy
class Foo extends React.Component {
  constructor(props) {
    super(props)
    this.state = { bar: 0 }
  }
  render() {
    return <div>Foo</div>
  }
}

never mode

Will enforce the state initialization style to be with a class property.

Examples of incorrect code for this rule:

Copy
class Foo extends React.Component {
  constructor(props) {
    super(props)
    this.state = { bar: 0 }
  }
  render() {
    return <div>Foo</div>
  }
}

Examples of correct code for this rule:

Copy
class Foo extends React.Component {
  state = { bar: 0 }
  render() {
    return <div>Foo</div>
  }
}

When Not To Use It

When the way a component state is being initialized doesn't matter.

The content on this page is adapted from the ESLint User Guide. Copyright © OpenJS Foundation and other contributors, www.openjsf.org. All rights reserved. https://eslint.org/docs/rules/