On the other hand, Clojure fits into the React model like toothpaste in tubes and the community has switched almost universally (save the Hoplon guys) to one of the React wrappers. I recommend starting with Reagent . Om has more mindshare but Reagent's model is considerably simpler. If you need more structure around the app, check out Re-frame . In either case you want to set up your project with figwheel  (lein new figwheel <project>) and add reagent/re-frame as a dependency.
P.S. I use Vim for everything non-lisp but I use Emacs with Evil mode for lisps. Evil mode is bar none the best vim emulator I've used and is the only one I can stand to use on an extended basis.
I would also recommend Reagent + re-frame + figwheel, which I'm using for my current project after having used Om for many months previously. Its an excellent model for writing complex apps.
We're using it to build a medium-large web app and it's been working out great. Being able to reason about the state of UI hasn't been this easy for me before.
I haven't tried Mithril in cljs personally but it fits the model so you should be fine with just writing a wrapper function or macro to save some boiler plate on the cljs to js data structure conversion.
The challenges in the cljs app I'm working on are the same challenges you run into any app: how do you separate concerns, where does state reside, how do you keep it in sync with the server, etc. A problem that's unique to React based apps is how to get data from your app state to a component without higher level components needing to be changed.
My main annoyance with cljs is that rethrowing errors in Chrome swallows the stack trace and core.async wraps everything in a try/catch block. This means that you need to debug by breaking on error, typing `ex.stack` in the console, and reading compiled JS frames to find the source.
Great suggestions btw, and I absolutely agree with Clojures a big win over Java, I was actually very briefly learning myself Clojure during Java and algo labs but the teachers didn't appreciate that at all :(
> P.S. I use Vim for everything non-lisp but I use Emacs with Evil mode for lisps. Evil mode is bar none the best vim emulator I've used and is the only one I can stand to use on an extended basis.
I love reading that, I have been using Vim for 4 years or so, but for a month or two I actually managed to switch to emacs with evil-mode. I did however notice that my knowledge of the different modes was too limited, and I was basically just using vim in emacs, so dropped it again. Since today I actually switched back to Emacs, found my self-written cheat-sheet and so far it's going great (no evil-mode so far).