Skip to content

Commit

Permalink
Add doc for state-in-constructor rule
Browse files Browse the repository at this point in the history
  • Loading branch information
lukyth committed Aug 18, 2018
1 parent 2f06677 commit 4706e86
Showing 1 changed file with 74 additions and 0 deletions.
74 changes: 74 additions & 0 deletions docs/rules/state-in-constructor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Enforce state initialization style (react/state-in-constructor)

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

## Rule Options

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

### `always` mode

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

The following patterns are considered warnings:

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

The following patterns are **not** considered warnings:

```jsx
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.

The following patterns are considered warnings:

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

The following patterns are **not** considered warnings:

```jsx
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.

0 comments on commit 4706e86

Please sign in to comment.