# react/no-did-update-set-state
📝 Disallow usage of setState in componentDidUpdate.
Updating the state after a component update will trigger a second `render()` call and can lead to property/layout thrashing.
## Rule Details
Examples of **incorrect** code for this rule:
```jsx
var Hello = createReactClass({
componentDidUpdate: function() {
this.setState({
name: this.props.name.toUpperCase()
});
},
render: function() {
return
Hello {this.state.name}
;
}
});
```
Examples of **correct** code for this rule:
```jsx
var Hello = createReactClass({
componentDidUpdate: function() {
this.props.onUpdate();
},
render: function() {
return Hello {this.props.name}
;
}
});
```
```jsx
var Hello = createReactClass({
componentDidUpdate: function() {
this.onUpdate(function callback(newName) {
this.setState({
name: newName
});
});
},
render: function() {
return Hello {this.props.name}
;
}
});
```
## Rule Options
```js
...
"react/no-did-update-set-state": [, ]
...
```
### `disallow-in-func` mode
By default this rule forbids any call to `this.setState` in `componentDidUpdate` outside of functions. The `disallow-in-func` mode makes this rule more strict by disallowing calls to `this.setState` even within functions.
Examples of **incorrect** code for this rule:
```jsx
var Hello = createReactClass({
componentDidUpdate: function() {
this.setState({
name: this.props.name.toUpperCase()
});
},
render: function() {
return Hello {this.state.name}
;
}
});
```
```jsx
var Hello = createReactClass({
componentDidUpdate: function() {
this.onUpdate(function callback(newName) {
this.setState({
name: newName
});
});
},
render: function() {
return Hello {this.state.name}
;
}
});
```