diff --git a/lib/rules/no-unused-state.js b/lib/rules/no-unused-state.js index 05bc08b29a..e05ef73cd4 100644 --- a/lib/rules/no-unused-state.js +++ b/lib/rules/no-unused-state.js @@ -415,7 +415,7 @@ module.exports = { handleAssignment(node.id, node.init); }, - MemberExpression(node) { + 'MemberExpression, OptionalMemberExpression'(node) { if (!classInfo) { return; } diff --git a/tests/lib/rules/no-unused-state.js b/tests/lib/rules/no-unused-state.js index f6ded949bd..2ad25901a3 100644 --- a/tests/lib/rules/no-unused-state.js +++ b/tests/lib/rules/no-unused-state.js @@ -231,6 +231,28 @@ eslintTester.run('no-unused-state', rule, { } }`, parser: parsers.BABEL_ESLINT + }, { + code: ` + class OptionalChaining extends React.Component { + constructor() { + this.state = { foo: 0 }; + } + render() { + return ; + } + }`, + parser: parsers['@TYPESCRIPT_ESLINT'] + }, { + code: ` + class OptionalChaining extends React.Component { + constructor() { + this.state = { foo: 0 }; + } + render() { + return ; + } + }`, + parser: parsers.BABEL_ESLINT }, `class VariableDeclarationTest extends React.Component { constructor() {