React is ...
- Isomorphic
It can run on the server or the front end.
- ReactJs employs Virtual DOM
- ReactJS has a unidirectional data flow
- React allows for data binding. Change in the data updates the component.
- Open-closed principle.
Properties exposed to the component user.
Objects open for extension but closed for modification.
=> SOLID design principle.
Robert C. Martin‘s SOLID design principle (https://stackify.com/solid-design-open-closed-principle/)
- Single Responsibility Principle
- Open/Closed Principle
- Liskov Substitution Principle (design contract - the child subclasses accept the same input parameter values)
- Interface Segregation Principle (don't have bloated polluted interfaces). Child inherits from the parent and implements its own interface
- Dependency Inversion (High level modules should be easily reusable and unaffected by changes). Details should depend on abstractions. Abstractions do not depend on details.