Skip to content

Commit

Permalink
OM-445: react native compatibility
Browse files Browse the repository at this point in the history
remove hard coding to ReactDOM in om.next ns
  • Loading branch information
dnolen committed Oct 26, 2015
1 parent f0d7feb commit b4a2c98
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 21 deletions.
11 changes: 9 additions & 2 deletions src/main/om/dom.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
(:require-macros [om.dom :as dom])
(:require [cljsjs.react]
[cljsjs.react.dom]
[goog.object :as gobject]))
[goog.object :as gobj]))

(dom/gen-react-dom-fns)

Expand Down Expand Up @@ -33,7 +33,7 @@
(this-as this
;; NOTE: if switch to macro we remove a closure allocation
(let [props #js {}]
(gobject/extend props (.-props this)
(gobj/extend props (.-props this)
#js {:value (aget (.-state this) "value")
:onChange (aget this "onChange")
:children (aget (.-props this) "children")})
Expand All @@ -54,3 +54,10 @@
"Equivalent to React.renderToString"
[c]
(js/React.renderToString c))

(defn node
"Returns the dom node associated with a component's React ref."
([component]
(js/ReactDOM.findDOMNode component))
([component name]
(some-> (.-refs component) (gobj/get name) (js/ReactDOM.findDOMNode))))
35 changes: 16 additions & 19 deletions src/main/om/next.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -538,13 +538,6 @@
[x]
(and (component? x) ^boolean (.isMounted x)))

(defn dom-node
"Returns the dom node associated with a component's React ref."
([component]
(js/ReactDOM.findDOMNode component))
([component name]
(some-> (.-refs component) (gobj/get name) (js/ReactDOM.findDOMNode))))

(defn react-ref
"Returns the component associated with a component's React ref."
[component name]
Expand Down Expand Up @@ -1044,7 +1037,7 @@
(let [renderf (fn [data]
(binding [*reconciler* this
*shared* (:shared config)]
(let [c (js/ReactDOM.render (rctor data) target)]
(let [c ((:root-render config) (rctor data) target)]
(when (nil? @ret)
(swap! state assoc :root c)
(reset! ret c)))))
Expand All @@ -1071,7 +1064,7 @@
#(-> %
(dissoc :target) (dissoc :render) (dissoc :root)
(dissoc :remove)))
(js/ReactDOM.unmountComponentAtNode target))})
((:root-unmount config) target))})
(add-watch (:state config) target
(fn [_ _ _ _] (schedule-render! this)))
(parsef)
Expand Down Expand Up @@ -1178,15 +1171,18 @@
send merge-sends remotes
merge-tree merge-ref
optimize
history]
:or {ui->props default-ui->props
indexer om.next/indexer
merge-sends #(merge-with into %1 %2)
remotes [:remote]
merge-tree #(merge-with merge %1 %2)
merge-ref default-merge-ref
optimize (fn [cs] (sort-by depth cs))
history 100}
history
root-render root-unmount]
:or {ui->props default-ui->props
indexer om.next/indexer
merge-sends #(merge-with into %1 %2)
remotes [:remote]
merge-tree #(merge-with merge %1 %2)
merge-ref default-merge-ref
optimize (fn [cs] (sort-by depth cs))
history 100
root-render #(js/ReactDOM.render %1 %2)
root-unmount #(js/ReactDOM.unmountComponentAtNode %)}
:as config}]
{:pre [(map? config)]}
(let [idxr (indexer)
Expand All @@ -1199,7 +1195,8 @@
:merge-tree merge-tree :merge-ref merge-ref
:optimize optimize
:normalize (or (not norm?) normalize)
:history (c/cache history)}
:history (c/cache history)
:root-render root-render :root-unmount root-unmount}
(atom {:queue [] :queued false :queued-sends {}
:sends-queued false
:target nil :root nil :render nil :remove nil
Expand Down

0 comments on commit b4a2c98

Please sign in to comment.