4 ms·
Instead of living the basic react way and gathering state in one component and passing it down as a prop to a child, you feed it into a global "state store". Th
by selfmodruntime 3y ago
Instead of living the basic react way and gathering state in one component and passing it down as a prop to a child, you feed it into a global "state store". The child component then requests the exact state they need from the state store. This also works reversed, instead of passing "setX" as a function to a child, you just rely on them to gather the state and pass it to the store.
The thought behind this is that components live in pyramids, and state and props ideally only go down and rarely up by setters-> parents and their immediate children can easily share state and props.
This gets more complicated the larger your family line gets. Many grandchildren down, you have since passed the respective props via prop drilling through a lot of components that perhaps don't care for them. It also gets complicated if you want to share state not in an immediate family line, but in a neighborhood.
Overdoing it is almost like hoarding. You think "eh, maybe I need this later somewhere else) and suddenly, your entire application basically lives in the global store.
- bobthepanda 3y agoRedux, and later useContext, were invented specifically to eliminate prop drilling.
- williamcotton 3y agoProp drilling wouldn’t be an issue in a functional language as partial application could solve this problem. I think a lot of the issues with React in general has to do with attempting to contort JS into a functional language. useContext can lead to some gnarly code.
- bobthepanda 3y agoThe major issue, IMO, is that the DOM is just markup with an API grafted on, and so any framework attempting to add the slightest bit of composability or state management has to twist and turn itself to be compatible in all browsers. And that's how we got here, because everyone wants to make their applications available on as many platforms as possible, without having to maintain five or six separate teams that have to coordinate a roadmap, and the browser is the only somewhat consistent way to do this.
- simonbarker87 3y ago> contort JS into a functional language I made something last year in a functional style as I was fresh off the back of a few React jobs and projects. I got a proof of concept working but the code was awful to work with. I took a couple of days to start over and rewrite it with OOP principles and it was in a much better state afterwards.
- selfmodruntime 3y agoThis is untrue. You can observe this in scalas implicits, which generate an insane mess in any medium to large codebase.
- wmfiv 3y agoRight. And I think the point is that Redux is a godsend for some small percentage of products but for the vast majority the cure is worse than the disease. Simple and slightly verbose is just "better" as a general solution than the powerful but complex solutions you get with Redux.
- airtonix 3y ago[dead]
- williamcotton 3y agoA global store isn’t necessarily a bad thing… in a functional language!