React (JavaScript library)
Overview
React is a JavaScript library for building user interfaces, primarily for single-page applications. It's used for handling the view layer in web and mobile apps. React allows developers to create large web applications that can update and render efficiently in response to data changes, without requiring page reloading.
History
React was created by Jordan Walke, a software engineer at Facebook. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram in 2012. It was open-sourced at JSConf US in May 2013.
Features
React allows developers to create components, or self-contained pieces of code that can be reused and combined to build complex user interfaces. The main features of React include:
JSX
JSX is a syntax extension for JavaScript that is used with React to describe what the user interface should look like. JSX produces React "elements", and is intended to be used in conjunction with JavaScript, rather than as a replacement.
Components
React code is made of entities called components. Components are JavaScript classes or functions that optionally accept inputs, or props, and return a React element that describes how a section of the UI should appear.
One-way Data Binding and Flux
React implements one-way data flow which makes it easy to reason about an application. This data flow architecture is often referred to as Flux. It involves unidirectional data flow, and the use of "stores" to manage application state.
Virtual DOM
React creates an in-memory data structure cache, computes the resulting differences, and then updates the browser's displayed DOM efficiently. This allows developers to write code as if the entire page is rendered on each change, while the React libraries only render subcomponents that actually change.
Usage
React is used to handle the view layer for web and mobile applications. React allows developers to create reusable UI components. It is currently one of the most popular JavaScript libraries and it has a strong foundation and large community behind it.
Ecosystem
The React ecosystem is vast and rapidly evolving with a variety of additional libraries that can be used to enhance React's capabilities. Some of these include:
- Redux: A predictable state container for JavaScript apps. - React Router: A routing library for React-based applications. - Enzyme: A JavaScript testing utility for React that makes it easier to assert, manipulate, and traverse your React Components' output.