Advertisement
Guest User

Untitled

a guest
Sep 17th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. (ns react.helper
  2. #?(:cljs (:require [cljsjs.react]
  3. [cljsjs.create-react-class])))
  4.  
  5. #?(:cljs
  6. (defn- react-factory [display-name render]
  7. (js/React.createFactory
  8. (js/createReactClass
  9. #js {:displayName display-name
  10. :shouldComponentUpdate
  11. (fn [next-props _]
  12. (this-as this
  13. (not= (.. this -props -value) (.-value next-props))))
  14. :render
  15. (fn []
  16. (this-as this
  17. (apply render (-> this .-props .-value))))}))))
  18.  
  19. #?(:cljs
  20. (defn component [display-name render]
  21. (let [factory (react-factory display-name render)]
  22. (fn create-element [& props] (factory #js {:value props})))))
  23.  
  24. #?(:cljs
  25. (defn $ [el & args]
  26. (let [[opts children] (if (map? (first args))
  27. [(clj->js (first args)) (rest args)]
  28. [#js {} args])]
  29. (apply js/React.createElement el opts children))))
  30.  
  31. #?(:clj
  32. (defmacro defc [name argv & body]
  33. `(def ~name (react.helper/component (name '~name) (fn ~argv ~@body)))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement