diff --git a/lib/rules/require-optimization.js b/lib/rules/require-optimization.js index 329354581d..40fe28e403 100644 --- a/lib/rules/require-optimization.js +++ b/lib/rules/require-optimization.js @@ -166,6 +166,10 @@ module.exports = { return { ArrowFunctionExpression(node) { + // Skip if the function is declared in the class + if (isFunctionInClass()) { + return; + } // Stateless Functional Components cannot be optimized (yet) markSCUAsDeclared(node); }, diff --git a/tests/lib/rules/require-optimization.js b/tests/lib/rules/require-optimization.js index ea5da36295..01e9ca0bc8 100644 --- a/tests/lib/rules/require-optimization.js +++ b/tests/lib/rules/require-optimization.js @@ -118,6 +118,23 @@ ruleTester.run('react-require-optimization', rule, { code: ` const obj = { prop: [,,,,,] } ` + }, { + code: ` + import React from "react"; + class YourComponent extends React.Component { + handleClick = () => {} + shouldComponentUpdate(){ + return true; + } + render() { + return
123
+ } + } + `, + parser: parsers.BABEL_ESLINT, + errors: [{ + message: MESSAGE + }] }], invalid: [{ @@ -142,6 +159,20 @@ ruleTester.run('react-require-optimization', rule, { errors: [{ message: MESSAGE }] + }, { + code: ` + import React from "react"; + class YourComponent extends React.Component { + handleClick = () => {} + render() { + return
123
+ } + } + `, + parser: parsers.BABEL_ESLINT, + errors: [{ + message: MESSAGE + }] }, { code: ` import React, {Component} from "react";