# 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}
; } }); ```