Assume you are using React and you are writing a custom hook useSomething
that returns the identical same thing each time it is invoked for the same component.
const something = useSomething()
// useSomething() at time X === useSomething() at time Y
If you now use this something
value inside of a useEffect(() => ...)
and you do not pass something
as a dependency to the array of the second argument of useEffect
then the linter will warn you:
React Hook useEffect has a missing dependency: 'something'. Either include it or remove the dependency array. (react-hooks/exhaustive-deps)
Of course ESLint cannot know that something
will always stay identical (per component), but adding not-changing things like something
to the dependency array of useEffect
each time they are used is really annoying. Just deactivating react-hooks/exhaustive-deps
does also not seem to be a good solution (nor using // eslint-disable-next-line react-hooks/exhaustive-deps
).
Is there a better solution than to add things like that unnecessarily to the dependency array of useEffect
just to make the Linter happy?
Please find a simple demo here: https://codesandbox.io/s/sad-kowalevski-yfxcn [Edit: Please be aware that the problem is about the general pattern described above and not about this stupid little demo - the purpose of this demo is just to show the ESLint warning, nothing else]
[Edit] Please find an additional demo here: https://codesandbox.io/s/vibrant-tree-0cyn1