Today I just want to vent out my frustration with React (and Redux) and say it loud that it sucks big time! Years ago I used a library called Knockout to build UI and never had any problem with it. It was simple to understand and pick up. React takes a lot of time to pick up and I have to write all this convoluted code. Redux multiplies the convolution by 10 times. I honestly don’t think anyone would use this library and kudos to Facebook for somehow making it a blockbuster success.
I was very patient with React and in fact started with a very positive image of it in my mind i.e., had already made up my mind that is was good. I did not enjoy constant problems with create-react-app, babel etc. but was ready to forgive. My frustration really started when I was trying to render some data (basically a JavaScript dictionary that stores the rows from a database) as a table and the table won’t refresh when I would update a cell [1]. React forces you to make a complete copy of the data and call the setState for changes to take effect. I wonder why no one points out the performance issues with this. With KO (Knockout) you would make each cell as an observable and add an event handler to it. Or you could just make the table as observable and raise an event that told the UI which cell to update. Simple as that.
Redux is no better in that it also forces you to make a complete copy of the data. Anyway I liked the concept of all the state being stored in a single centralized place. But it introduces so much unnecessary baggage and distasteful terms: slices, thunks, actions, dispatcher, reducer, blah blah blah. I refactored the app to use Redux and now this stupid of stupidest errors when I try to store a Date in the store [2]. Ref:
A non-serializable value was detected in an action, in the path: `payload.start_date`. Value: Tue Aug 10 2021 00:00:00 GMT-0700 (Pacific Daylight Time)
The claim that data flows unidirectionally in a Redux app is just BS. From here:
A unidirectional data flow is central to the Flux pattern,
This is Redux (or Flux) data flow:

From Graph theory point of view this is a cyclic and bi-directional graph no different than the MVC pattern below (omitting the controller):

that Redux or Flux seems to imply is different.
React-Redux sucks big time.