We often compare React, Angular and Vue. I get why. But it isn’t the best. Because both Vue and Angular are more complete solutions for building web apps, while React are just a library for dealing with the user interface part of it.
And leave other things like communicating with API’s, routing and global state to others.
The bad thing about this approach is that you need to learn more, and there are no “standards”. But the good thing about this is that you can choose the best option for what you are building, and only increase the complexity as you need it.
React is based on components instead of a variant
of the well-known MVC model. In a MVC model you have the model (data), the interface (view) and the controller; the controller is the one that controls everything and are doing the work. A component based system on the other hand is based on the idea that you make many small components that are fully independent and combine them to build what every you are building, They can be pure UI components or pure wrapper components; or a combination. A wrapper component is a component with just logic.
The biggest difference between the two from a practical stand point is the structure. A MVC system does a lot of the organization for you, but makes it harder to re-organize everything. When you use React you typically start with a single file, then you divide it into different files and slowly make it more complex as you need it.
That means that the structure rarely is more complicated than it has to be.