React is Facebook's popular front-end development framework for building dynamic full page JavaScript web applications and embedded JavaScript widgets.
What does React do?
React at its core provides developers a way to build re-usable bits of user interface that can be assembled together to build dynamic web applications or complex widgets. The ability to define a piece of the interface once and re-use it wherever the interface needs that functionality can greatly speed up development of larger web applications.
React gives developers a simpler way to manage the current state of a web application. Instead of having to write your own logic for keeping track of user input and responding to what the user does, React provides all of that functionality out of the box for you. React also handles updating the page for you when something in the state changes. You do not have to manually look up the HTML element yourself and make the change yourself.
React also provides a way for developers to make their HTML elements dynamic by embedding JavaScript inside of the HTML for a React application.
Meet JSX - JavaScript inside of your HTML
React comes with its own domain-specific language, which is a fancy way of saying it has its own special way of writing the code to make your interface. JSX blends JavaScript and HTML together to let developers write JavaScript code inside of their HTML to change the HTML dynamically in response to things the user does or events that happen behind the scene.
For example, JSX lets you show a list of data by looping through the data with JavaScript and creating an HTML element for each bit of data following a template or pattern you define instead of you having to manually write the HTML for each element by hand or writing some complex logic to create HTML elements and attach them to page.
React is great for big and small applications
React is a much smaller tool than frameworks like Angular, which tend to include much more functionality and features by default. The core React library focuses primarily on state management, components, and JSX. Developers who need other functionality can use third-party libraries to fill in what React does not provide.
React is great if you have simpler needs or if you want to use other tools to provide functionality that is included in a larger framework. Teams have built full complex web applications using React or simple widgets embedded in pages.
React has a rich plugin ecosystem
React’s tight focus means that developers have created other tools to fill in the areas that other frameworks like Angular provide. This is not a lack or bad thing on React’s part. One advantage React’s approach has over a “batteries-included” framework is that you are not stuck using the framework’s way of doing things. You can use your favorite tools to meet your needs if you already have tools that you like. The React ecosystem has many plugins that provide features developers need to build any kind of web application.