Skip to content

Commit dd2e632

Browse files
minor refactoring for better readability
1 parent 25eeb05 commit dd2e632

File tree

2 files changed

+32
-27
lines changed

2 files changed

+32
-27
lines changed

packages/plugins/eslint-plugin-react-x/src/rules/no-unnecessary-use-callback.spec.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,7 @@ ruleTester.run(RULE_NAME, rule, {
475475
},
476476
},
477477
},
478-
{
478+
{
479479
code: tsx`
480480
const { useCallback, useEffect } = require("@pika/react");
481481
@@ -598,6 +598,7 @@ ruleTester.run(RULE_NAME, rule, {
598598
const refItem = useCallback(cb, deps)
599599
};
600600
`,
601+
601602
tsx`
602603
import { useCallback, useState, useEffect } from 'react';
603604
@@ -629,13 +630,13 @@ ruleTester.run(RULE_NAME, rule, {
629630
630631
useEffect(() => {
631632
// some condition
632-
doSomeTask();
633-
}, [doSomeTask]);
633+
updateTest();
634+
}, [updateTest]);
634635
635636
useEffect(() => {
636637
// some condition
637-
doSomeTask();
638-
}, [doSomeTask]);
638+
updateTest();
639+
}, [updateTest]);
639640
640641
return <div />;
641642
};
@@ -648,7 +649,7 @@ ruleTester.run(RULE_NAME, rule, {
648649
649650
const updateTest = useCallback(() => { setTest(items.length + 1) }, [setTest, items]);
650651
651-
return <div ref={() => doSomeTask()} />;
652+
return <div ref={() => updateTest()} />;
652653
};
653654
`,
654655
tsx`
@@ -659,7 +660,7 @@ ruleTester.run(RULE_NAME, rule, {
659660
660661
const updateTest = useCallback(() => { setTest(items.length + 1) }, [setTest, items]);
661662
662-
return <div onClick={doSomeTask} />;
663+
return <div onClick={updateTest} />;
663664
};
664665
`,
665666
],

packages/plugins/eslint-plugin-react-x/src/rules/no-unnecessary-use-callback.ts

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -108,28 +108,32 @@ export function create(context: RuleContext<MessageID, []>): RuleListener {
108108
return;
109109
}
110110

111-
if (isIdentifier(node.id)) {
112-
const references = context.sourceCode.getDeclaredVariables(node)[0]?.references ?? [];
113-
const usages = references.filter((ref) => !(ref.init ?? false));
114-
115-
const size = usages.reduce((set, usage) => {
116-
const effect = AST.findParentNode(usage.identifier, (node) => {
117-
return isUseEffectLikeCall(node);
118-
});
119-
set.add(effect ?? node.parent);
120-
return set;
121-
}, new Set()).size;
122-
123-
if (size !== 1) {
124-
return;
125-
}
111+
if (!isUseCallbackCall(node.init ?? undefined)) {
112+
return;
113+
}
126114

127-
context.report({
128-
messageId: "noUnnecessaryUseCallbackInsideUseEffect",
129-
node,
130-
data: { name: node.id.name },
131-
});
115+
if (!isIdentifier(node.id)) {
116+
return;
132117
}
118+
119+
const references = context.sourceCode.getDeclaredVariables(node)[0]?.references ?? [];
120+
const usages = references.filter((ref) => !(ref.init ?? false));
121+
122+
const filteredUsageAmount = usages.reduce((set, usage) => {
123+
const effect = AST.findParentNode(usage.identifier, (node) => isUseEffectLikeCall(node));
124+
// TODO Better check for outside of useEffect usage
125+
return set.add(effect ?? 'outside');
126+
}, new Set());
127+
128+
if (filteredUsageAmount.size !== 1 || filteredUsageAmount.has('outside')) {
129+
return;
130+
}
131+
132+
context.report({
133+
messageId: "noUnnecessaryUseCallbackInsideUseEffect",
134+
node,
135+
data: { name: node.id.name },
136+
});
133137
},
134138
};
135139
}

0 commit comments

Comments
 (0)