Skip to content

Commit d1a477d

Browse files
committed
Dont report if this.state has been referenced in setState callback
1 parent 110c272 commit d1a477d

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

lib/rules/no-this-state-props.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,19 @@ module.exports = {
3333
}
3434
}
3535

36+
function isThisSetStateCallback (node) {
37+
if ( node.parent && node.parent.type === 'CallExpression' ) {
38+
var callee = node.parent.callee;
39+
var isMatching = (
40+
callee.type === 'MemberExpression' &&
41+
callee.object.type === 'ThisExpression' &&
42+
callee.property.name === 'setState' &&
43+
node.parent.arguments[1] === node
44+
)
45+
return isMatching
46+
}
47+
}
48+
3649
function isThisState(node) {
3750
var isMatching = (
3851
node.type === 'MemberExpression' &&
@@ -79,7 +92,7 @@ module.exports = {
7992
MemberExpression: function(node) {
8093
if ( isThisProps(node) || isThisState(node) ) {
8194
var ancestors = context.getAncestors()
82-
if ( ancestors.some(isThisSetState) ) {
95+
if ( ancestors.some(isThisSetState) && !ancestors.some(isThisSetStateCallback) ) {
8396
var setStateUsage = ancestors.find(isThisSetState)
8497
setStateUsages.push(setStateUsage);
8598
}

0 commit comments

Comments
 (0)