It starts to become difficult when we think clojurescript as a functionally pure language, that holds state for it UI components. It is simply, not possible.
However, it is possible to separate out individual components as well as their states. We can do it by storing data/state in reagent/atom. But when there are lots of states and lots of dependencies, things quickly become confusing and we start to wish for a out of the box solution for our state management. This is where re-frame comes in.