Bug: react-hooks/exhaustive-deps false positive when use function with generic type variable in useEffect
Open
Nobody has claimed this yet.
Component: ESLint Rules
Status: Unconfirmed
Type: Bug
- Dominant language
- JavaScript
- Stars
- 251k
- Forks
- 51.4k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 53
Description
React version: 18.2.0
Steps To Reproduce
- use function with generic type in useEffect
code example:
function useBug<T>(val: T) {
const ref = useRef<T>(val)
const fn = () => {
const temp: T = ref.current // <-- if remove the generic type will be ok
}
useEffect(() => {
fn()
}, []) // <-- ESLint error: React Hook useEffect has a missing dependency: 'fn'.
}
package version:
npmPackages:
@typescript-eslint/eslint-plugin: ^5.35.1 => 5.35.1
@typescript-eslint/parser: ^5.35.1 => 5.35.1
@typescript-eslint/scope-manager: 5.35.1
@typescript-eslint/type-utils: 5.35.1
@typescript-eslint/types: 5.35.1
@typescript-eslint/typescript-estree: 5.35.1
@typescript-eslint/utils: 5.35.1
@typescript-eslint/visitor-keys: 5.35.1
eslint: ^8.23.0 => 8.23.0
eslint-plugin-react-hooks: ^4.6.0 => 4.6.0
relevant: #20395
The current behavior
React Hook useEffect has a missing dependency: 'fn'. Either include it or remove the dependency array.
The expected behavior
No missing dependencies reported.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the minimal TypeScript reproduction in the issue and inspect the eslint-plugin-react-hooks exhaustive-deps implementation. Verify the generic useEffect example, then add or update coverage so this case no longer reports a missing fn dependency while existing dependency warnings remain intact.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- eslint, javascript, react, typescript
- Domain
- frontend, tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 35/100