Understanding React
React is a library developed by Facebook, designed to efficiently render dynamic content on a page using a virtual DOM. React lets us pretend that the entire page is redrawn any time our application's state changes. As a page author, we write functions that take data and return DOM elements. React renders the DOM elements on the page. Importantly, when the data changes, React efficiently diffs the page and re-renders only the parts that have changed. Diffing is essential because re-rendering the entire page is prohibitively expensive on even moderately complex pages. React is an improvement over previous attempts at solving the problem because there's no need to specify data bindings or watchers. We just describe how to render the page and React handles the change detection for us.
The React terminology
React uses several terms that we'll define here.
Component: This is a single JS class implementing the React component interface. The most important function for a component...