3 ms·
Hooks are also just JavaScript functions...?
by b_e_n_t_o_n 1y ago
Hooks are also just JavaScript functions...?
- thomasfromcdnjs 1y agoThey kind of are not though, you can't call them out of order and other things which is checked at runtime by the React "engine" and will stop script execution. If they were regular functions you could call them anytime.
- b_e_n_t_o_n 1y agoMany "regular" functions are context dependent.
- DangitBobby 1y agoThey are context dependent, must execute in the same order every time, and must be called every time the component re-renders (i.e., they do not support conditional calls). They have enough gremlin rules that calling them "just functions" is unhelpful for reasoning about using them.
- slmjkdbtl 1y agoBased on how they are run they are completely not just ordinary JavaScript functions, hook era components are also not just JavaScript functions, it's a very complicated system. React calling them "just functions" is untrue, just marketing buzz words, and it leads developers into traps.
- b_e_n_t_o_n 1y agoMany functions can only be called in a certain context. Calling them "not functions" is misleading imo because it implies those functions are compiled out or something, like `$state()` in Svelte.
- slmjkdbtl 1y agoYeah they themselves are functions but how they're called are managed by a complicated system, I think treating them as a separate new concept is less misleading than calling them plain functions
- b_e_n_t_o_n 1y agoWell they aren't plain functions, they're like lifecycle methods for the component with an implicit `this`. Perhaps that's how they should be described.
- Izkata 1y ago> React calling them "just functions" is untrue I'm pretty sure this is also untrue. AFAIK React has never used that phrase (and at the very least, I can't find it anywhere official right now), it came from other people convincing newcomers that hooks aren't something more complicated like objects (comparing to class-based components). React has always treated them as special functions, hence always prefixing them with the word "use".
- slmjkdbtl 1y ago> it came from other people convincing newcomers Yeah I think you're right