Callbacks as Clojure Records: an approach to generic Reagent components

Instead of defining a protocol you can make your records extend IFn — I know this can be done in Clojure, not sure about ClojureScript.