From ab8e7bfeeb3495109f033bc90eceed5ec897ce6e Mon Sep 17 00:00:00 2001 From: David Mohl Date: Mon, 26 Oct 2015 13:12:42 +0900 Subject: [PATCH 1/4] changed to use om.next --- resources/core.cljs | 37 ++++++++++++++++++++++++++++--------- resources/project.clj | 2 +- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/resources/core.cljs b/resources/core.cljs index beb1b92..1d2370b 100644 --- a/resources/core.cljs +++ b/resources/core.cljs @@ -2,7 +2,7 @@ (set! js/React (js/require "react-native/Libraries/react-native/react-native.js")) (ns $PROJECT_NAME_HYPHENATED$.core - (:require [om.core :as om])) + (:require [om.next :as om :refer-macros [defui]])) ;; Reset js/React back as the form above loads in an different React (set! js/React (js/require "react-native/Libraries/react-native/react-native.js")) @@ -17,16 +17,35 @@ ;; Set up our Om UI -(defonce app-state (atom {:text "Welcome to $PROJECT_NAME$"})) +(defonce app-state (atom {:app/text "Welcome to $PROJECT_NAME$"})) -(defn widget [data owner] - (reify - om/IRender - (render [this] - (view {:style {:flexDirection "column" :margin 40}} - (text nil (:text data)))))) +(defui WidgetComponent + static om/IQuery + (query [this] + '[:app/text]) + Object + (render [this] + (let [{:keys [app/text]} (om/props this)] + (view {:style {:flexDirection "column" :margin 40}} + (text nil text))))) -(om/root widget app-state {:target 1}) +;; om.next parser +(defmulti read om/dispatch) +(defmethod read :default + [{:keys [state]} k _] + (let [st @state] + (find st k) + (if-let [[_ v] (find st k)] + {:value v} + {:value :not-found}))) + +(def reconciler + (om/reconciler + {:state app-state + :parser (om/parser {:read read})})) + + +(om/add-root! reconciler WidgetComponent {:target 1}) (defn ^:export init [] ((fn render [] diff --git a/resources/project.clj b/resources/project.clj index 55f5e55..c1376a5 100644 --- a/resources/project.clj +++ b/resources/project.clj @@ -5,7 +5,7 @@ :url "http://www.eclipse.org/legal/epl-v10.html"} :dependencies [[org.clojure/clojure "1.7.0"] [org.clojure/clojurescript "1.7.145"] - [org.omcljs/om "0.9.0"] + [org.omcljs/om "1.0.0-alpha8"] [org.omcljs/ambly "0.6.0"]] :plugins [[lein-cljsbuild "1.1.0"]] :cljsbuild {:builds {:dev {:source-paths ["src"] From e13db21194e8b2529b531230afbc25759f721a4d Mon Sep 17 00:00:00 2001 From: David Mohl Date: Tue, 27 Oct 2015 12:43:34 +0900 Subject: [PATCH 2/4] changes required to make om.next work, bump to alpha11 --- resources/core.cljs | 7 ++++--- resources/project.clj | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/resources/core.cljs b/resources/core.cljs index 1d2370b..7cefcdf 100644 --- a/resources/core.cljs +++ b/resources/core.cljs @@ -42,10 +42,11 @@ (def reconciler (om/reconciler {:state app-state - :parser (om/parser {:read read})})) + :parser (om/parser {:read read}) + :root-render #(.render js/React %1 %2) + :root-unmount #(.unmountComponentAtNode js/React %)})) - -(om/add-root! reconciler WidgetComponent {:target 1}) +(om/add-root! reconciler WidgetComponent 1) (defn ^:export init [] ((fn render [] diff --git a/resources/project.clj b/resources/project.clj index c1376a5..96d4dc5 100644 --- a/resources/project.clj +++ b/resources/project.clj @@ -5,7 +5,7 @@ :url "http://www.eclipse.org/legal/epl-v10.html"} :dependencies [[org.clojure/clojure "1.7.0"] [org.clojure/clojurescript "1.7.145"] - [org.omcljs/om "1.0.0-alpha8"] + [org.omcljs/om "1.0.0-alpha11"] [org.omcljs/ambly "0.6.0"]] :plugins [[lein-cljsbuild "1.1.0"]] :cljsbuild {:builds {:dev {:source-paths ["src"] From fb025bbbe931d051bd69e7ea58f561502491ff44 Mon Sep 17 00:00:00 2001 From: David Mohl Date: Tue, 27 Oct 2015 15:57:02 +0900 Subject: [PATCH 3/4] changed :app/text to :app/msg because it conflicts with (text) --- resources/core.cljs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/core.cljs b/resources/core.cljs index 7cefcdf..78b4a51 100644 --- a/resources/core.cljs +++ b/resources/core.cljs @@ -17,17 +17,17 @@ ;; Set up our Om UI -(defonce app-state (atom {:app/text "Welcome to $PROJECT_NAME$"})) +(defonce app-state (atom {:app/msg "Welcome to $PROJECT_NAME$"})) (defui WidgetComponent static om/IQuery (query [this] - '[:app/text]) + '[:app/msg]) Object (render [this] - (let [{:keys [app/text]} (om/props this)] + (let [{:keys [app/msg]} (om/props this)] (view {:style {:flexDirection "column" :margin 40}} - (text nil text))))) + (text nil msg))))) ;; om.next parser (defmulti read om/dispatch) From b65274fb1c8b9d158c68094ca892e739565d49d7 Mon Sep 17 00:00:00 2001 From: David Mohl Date: Sat, 31 Oct 2015 14:13:19 +0900 Subject: [PATCH 4/4] version bump --- resources/project.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/project.clj b/resources/project.clj index 96d4dc5..d341ebd 100644 --- a/resources/project.clj +++ b/resources/project.clj @@ -5,7 +5,7 @@ :url "http://www.eclipse.org/legal/epl-v10.html"} :dependencies [[org.clojure/clojure "1.7.0"] [org.clojure/clojurescript "1.7.145"] - [org.omcljs/om "1.0.0-alpha11"] + [org.omcljs/om "1.0.0-alpha13"] [org.omcljs/ambly "0.6.0"]] :plugins [[lein-cljsbuild "1.1.0"]] :cljsbuild {:builds {:dev {:source-paths ["src"]