Skip to content

Commit f7a9fb5

Browse files
jaabergljharb
authored andcommitted
[fix] no-did-mount-set-state, no-did-update-set-state: Catch setState in cDU and cDM when defined as ClassProperties
1 parent a131363 commit f7a9fb5

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

lib/util/makeNoMethodSetStateRule.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ function makeNoMethodSetStateRule(methodName, shouldCheckUnsafeCb) {
7676
depth++;
7777
}
7878
if (
79-
(ancestor.type !== 'Property' && ancestor.type !== 'MethodDefinition') ||
79+
(ancestor.type !== 'Property' && ancestor.type !== 'MethodDefinition' && ancestor.type !== 'ClassProperty') ||
8080
!nameMatches(ancestor.key.name) ||
8181
(mode !== 'disallow-in-func' && depth > 1)
8282
) {

tests/lib/rules/no-did-mount-set-state.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,20 @@ ruleTester.run('no-did-mount-set-state', rule, {
107107
errors: [{
108108
message: 'Do not use setState in componentDidMount'
109109
}]
110+
}, {
111+
code: `
112+
class Hello extends React.Component {
113+
componentDidMount = () => {
114+
this.setState({
115+
data: data
116+
});
117+
}
118+
}
119+
`,
120+
parser: 'babel-eslint',
121+
errors: [{
122+
message: 'Do not use setState in componentDidMount'
123+
}]
110124
}, {
111125
code: `
112126
var Hello = createReactClass({

tests/lib/rules/no-did-update-set-state.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,20 @@ ruleTester.run('no-did-update-set-state', rule, {
107107
errors: [{
108108
message: 'Do not use setState in componentDidUpdate'
109109
}]
110+
}, {
111+
code: `
112+
class Hello extends React.Component {
113+
componentDidUpdate = () => {
114+
this.setState({
115+
data: data
116+
});
117+
}
118+
}
119+
`,
120+
parser: 'babel-eslint',
121+
errors: [{
122+
message: 'Do not use setState in componentDidUpdate'
123+
}]
110124
}, {
111125
code: `
112126
var Hello = createReactClass({

0 commit comments

Comments
 (0)