Closed
Description
Is there an existing issue for this?
- I have searched the existing issues and my issue is uniqueMy issue appears in the command-line and not only in the text editor
Description Overview
When the prev state parameter (second parameter) of getDerivedStateFromProps
is destructured in-place, the rule react/no-unused-state
crashes
static getDerivedStateFromProps = ({value, disableAnimation}: ToggleProps, {isControlled, isOn}: ToggleState) => {
here, isControlled
and isOn
are destructured state properties.
TypeError: Cannot read properties of undefined (reading 'references')
Occurred while linting /Users/ygenin/src/pillar/src/datagrid/implementation/filtering/filterEditors/DateFilterEditor.tsx:57
Rule: "react/no-unused-state"
at PropertyDefinition, ClassProperty (/Users/ygenin/src/pillar/node_modules/eslint-plugin-react/lib/rules/no-unused-state.js:388:34)
Expected Behavior
The eslint rule should handle the code without crashing.
The issue seems to be that the stateArg.name on the line below is undefined whereas it is expected to be 'state' or some other name if destructuring is not used.
const argVar = scope.variables.find((x) => x.name === stateArg.name);
eslint-plugin-react version
7.32.2
eslint version
8.2.0
node version
18.12.1
Metadata
Metadata
Assignees
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
ljharb commentedon May 1, 2023
Although lifecycles should always be a method and never a class field, it shouldn't crash regardless, so I'll have a fix pushed up shortly.
[Fix] `no-unused-state`: avoid crashing on a class field function wit…
[Fix] `no-unused-state`: avoid crashing on a class field function wit…
112 remaining items