Data flow
In the last two chapters, we saw how to create single reusable components and how to compose them together effectively.
Now, it is time learn how to build a proper data flow for sharing data across multiple components in our application.
React enforces a very interesting pattern to make data go from the root to the leaves. This pattern is usually called Unidirectional Data Flow, and we will see it in detail in this section.
As the name suggests, in React data flows in a single direction from the top to the bottom of the tree. This approach has many benefits because it simplifies the components' behavior and the relationship between components, making the code more predictable and maintainable.
Every component receives data from its parent in the form of props, and props cannot be modified. When the data is received, it can be transformed into new information and passed to the other children down the tree. Each of the children can hold a local state and use it as a prop...