Skip to content

Commit

Permalink
fixup! [New] Symmetric useState hook variable names
Browse files Browse the repository at this point in the history
  • Loading branch information
duncanbeevers committed Dec 13, 2021
1 parent d032842 commit 30ef2b8
Showing 1 changed file with 8 additions and 12 deletions.
20 changes: 8 additions & 12 deletions lib/rules/hook-use-state.js
Expand Up @@ -154,21 +154,19 @@ module.exports = {
const isSingleGetter = valueVariable && variableNodes.length === 1;
const isUseStateCalledWithSingleArgument = node.arguments.length === 1;
if (isSingleGetter && isUseStateCalledWithSingleArgument) {
const useMemoReactImportSpecifier = namedReactImports ? namedReactImports.find((specifier) => specifier.imported.name === 'useMemo') : undefined;
const sourceCode = context.getSourceCode();
const useStateArgumentSourceCode = sourceCode.getText(node.arguments[0]);
const useMemoReactImportSpecifier = namedReactImports
&& namedReactImports.find((specifier) => specifier.imported.name === 'useMemo');

suggestions.unshift({
desc: 'Replace useState call with useMemo',
fix: (fixer) => {
const useMemoImportName = useMemoReactImportSpecifier && useMemoReactImportSpecifier.local.name;

const useMemoReference = useMemoImportName
|| (defaultReactImportName
const useMemoCode = (useMemoReactImportSpecifier
&& useMemoReactImportSpecifier.local.name)
|| (defaultReactImportName
&& `${defaultReactImportName}.useMemo`)
|| 'useMemo';
|| 'useMemo';

const fixes = [
return [
// Add useMemo import, if necessary
useStateReactImportSpecifier
&& (!useMemoReactImportSpecifier || defaultReactImportName)
Expand All @@ -178,11 +176,9 @@ module.exports = {
// Convert useState call to useMemo + arrow function + dependency array
fixer.replaceTextRange(
node.range,
`${useMemoReference}(() => ${useStateArgumentSourceCode}, [])`
`${useMemoCode}(() => ${context.getSourceCode().getText(node.arguments[0])}, [])`
),
].filter(Boolean);

return fixes;
},
});
}
Expand Down

0 comments on commit 30ef2b8

Please sign in to comment.