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.