From 06a82b54d8c3a66e58bae4bada560a75d5210bee Mon Sep 17 00:00:00 2001 From: Chiawen Chen Date: Thu, 2 Jun 2022 01:13:39 +0800 Subject: [PATCH] [Fix] `display-name`: fix false positive when using memo --- lib/util/Components.js | 2 +- tests/lib/rules/display-name.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/util/Components.js b/lib/util/Components.js index eb60d845a5..b6114717c5 100644 --- a/lib/util/Components.js +++ b/lib/util/Components.js @@ -515,7 +515,7 @@ function componentRule(rule, context) { // Case like `React.memo(() => <>)` or `React.forwardRef(...)` const pragmaComponentWrapper = utils.getPragmaComponentWrapper(node); - if (pragmaComponentWrapper) { + if (pragmaComponentWrapper && utils.isReturningJSXOrNull(node)) { return pragmaComponentWrapper; } diff --git a/tests/lib/rules/display-name.js b/tests/lib/rules/display-name.js index be0c8442e5..85e076d4d1 100644 --- a/tests/lib/rules/display-name.js +++ b/tests/lib/rules/display-name.js @@ -588,6 +588,19 @@ ruleTester.run('display-name', rule, { } `, }, + { + // issue #3303 + code: ` + function MyComponent(props) { + return {props.name}; + } + + const MemoizedMyComponent = React.memo( + MyComponent, + (prevProps, nextProps) => prevProps.name === nextProps.name + ) + `, + }, ]), invalid: parsers.all([