5 ms·
How do you compose two base classes into a subclass? That's basically what hooks allows. You can use two different, unrelated custom hooks in one component, and
by mambodog 8y ago
How do you compose two base classes into a subclass? That's basically what hooks allows. You can use two different, unrelated custom hooks in one component, and a different combination in another component, without having to bundle them into base classes.
- sowhatquestion 8y ago> How do you compose two base classes into a subclass? In most other OOP languages besides JS, the obvious answer would be to use traits.
- mst 8y agoHence why I've been playing around with class decorators and friends to try and figure out a nice way to do method modifiers, traits, etc. But I got sidetracked with "but howtf do I make typescript understand the resulting signatures" and then got nerd sniped by something else. Hopefully eventually I'll get back to it.
- danabramov 8y agoIf you want to understand what Hooks are for, I wrote this piece: https://medium.com/@dan_abramov/making-sense-of-react-hooks-fdbde8803889 https://medium.com/@dan_abramov/making-sense-of-react-hooks-... I hope you find it helpful! Hooks aren't _quite_ like traits or mixins or anything else. You can apply the same Hook multiple times and pass values between them. That's what makes them powerful. Look at my last demo. https://overreacted.io/making-setinterval-declarative-with-react-hooks/#bonus-fun-demo https://overreacted.io/making-setinterval-declarative-with-r...
- mst 8y agoYeah, definitely a different beast. I've done things with what's basically dynamic scope trickery before now, though it didn't look exactly like hooks. I still want traits because I've got very fond of doing class-with-read-only-members type stuff and being able to compose functionality together works really nicely in that regard (nonetheless, I very much appreciate your efforts on elucidating hooks - I think most of the reason I'm replying this confidently is as combination of your articles and the reference docs :)
- mambodog 8y agoTraits are okay: React 'Mixins' which I mentioned in my parent post are basically traits but at the framework level, which allows them to be smart about composing/merging the use of framework functionality normally accessed by overriding superclass methods (eg. componentDidUpdate). Traits still have the composability issues I mentioned for React Mixins: how do you avoid collisions between the namespaces of different traits while still allowing some to compose others?
- goatlover 8y agoMaybe React hooks are a bit different, but Drupal was heavily hook based, and then starting going away from that in favor of Symfony components in recent years, which are class based and utilize inheritance. Also, UI has typically been considered one of the areas where OOP is well suited for, from Smalltalk to the Web DOM.
- lj3 8y ago> UI has typically been considered one of the areas where OOP is well suited for Without any evidence to support it. It's one of those phrases that gets repeated without critical thought.