React JS is a library for creating user interfaces that focuses on the view layer. It uses a virtual DOM which is a JavaScript object representation of real DOM elements to efficiently update and render components when data changes. Components can contain subcomponents in a nested structure similar to HTML. Data flows through states that store application data and react to changes, and props are used to pass data between components. The DOM represents elements in a web page as JavaScript objects that can be manipulated. React components can be functions or classes, accept arbitrary inputs via props, and return React elements describing what should appear on screen.