We've been using Reagent[1], re-frame (events as frp)[2], and re-com (component library)[3] as layers of abstraction in a dsl for creating react components for a while.
That dsl is called hiccup, and it's a way to deal with datastructures while building up (usually) html. In the case of reagent, hiccup -> [reagent] -> react-components.
We write functions that return data structures, that get turned into react components.
It's really awesome to be able to treat your UI as data and pure functions that act on data. Any list is simply a formatting function mapped over data at rest, usually a vector of maps.
[1] http://reagent-project.github.io