> hooks form part of the input to the hook/render function.
They are input, but they are not input parameters.
A function is pure if it returns same result for same input parameters. Hooks make it possible to return different result for same input parameters, therefore making the function impure.
Again, no. Functional components are not defined by just their "javascript function" but rather by the contract with the rest of the rendering system.
And that's why the context manipulated by hooks looks like a sideeffect, and it often does describe sideeffects, but it doesn't. That context is both an input and an output, only the rendering logic in React decides what to do with that output. Without the rendering logic deciding to execute those sideeffect, the context isn't actually changed at all. Which is why you usually don't need to care about when or how often the component is executed.
The whole point of pure function is that the caller can understand its dependencies without looking at its implementation, because all dependencies are listed as parameters.
You can redefine what "pure" means if you wish, but that pretty much defeats the purpose.
They are input, but they are not input parameters.
A function is pure if it returns same result for same input parameters. Hooks make it possible to return different result for same input parameters, therefore making the function impure.