dillon1000/react
Commit
Browse files Add eslint-plugin-react-hooks/exhaustive-deps rule to check stale closure dependencies (#14636)
* Add ESLint rule for useEffect/useCallback/useMemo Hook dependencies * Fix ReactiveDependencies rule * fix lint errors * Support useLayoutEffect * Add some failing tests and comments * Gather dependencies in child scopes too * If we don't find foo.bar.baz in deps, try foo.bar, then foo * foo is enough for both foo.bar and foo.baz * Shorter rule name * Add fixable meta * Remove a bunch of code and start from scratch * [WIP] Only report errors from dependency array This results in nicer editing experience. Also has autofix. * Fix typo * [Temp] Skip all tests * Fix the first test * Revamp the test suite * Fix [foo] to include foo.bar * Don't suggest call expressions * Special case 'current' for refs * Don't complain about known static deps * Support useImperativeHandle * Better punctuation and formatting * More uniform message format * Treat React.useRef/useState/useReducer as static too * Add special message for ref.current * Add a TODO case * Alphabetize the autofix * Only alphabetize if it already was * Don't add static deps by default * Add an undefined variable case * Tweak wording * Rename to exhaustive-deps * Clean up / refactor a little bit
Changed paths5 files
First-parent comparisonfixtures/eslint/.eslintrc.json ModifiedM fixtures/eslint/index.js ModifiedA packages/eslint-plugin-react-hooks/__tests__/ESLintRuleExhaustiveDeps-test.js AddedA packages/eslint-plugin-react-hooks/src/ExhaustiveDeps.js AddedM packages/eslint-plugin-react-hooks/src/index.js ModifiedPatch
Files changed
Rendering syntax-highlighted changes…