User interfaces are hierarchical in nature, partly because HTML is inherently hierarchical and partly because of the way that we structure the information presented to users. For example, this is why we have nested levels of navigation in some applications—we can't possibly fit everything on the screen at once. Naturally, our code starts to reflect this hierarchical structure by becoming a hierarchy itself. This is good in the sense that it reflects what the user sees. It's bad in the sense that deep hierarchies are difficult to comprehend.
In this section, we'll look at hierarchical structures in frontend architectures and how Flux is able to avoid complex hierarchies. We'll first cover the idea of having several top-level components, each with their own hierarchies. Then, we'll look at the side-effects that happen within hierarchies and how data-flows through Flux layers.