(apply dom/p nil (map render-subdiv (:subdivs data))) Is not going to work. You need to put the result of map into a JavaScript array. React doesn't know anything about ClojureScript sequences and I don't expect it to for some time and I don't intend to magically making that work in Om in the near term.
David On Fri, Jan 17, 2014 at 4:28 PM, Samuel Aaron <[email protected]> wrote: > Hi there, > > I was playing about with Om and ran into an issue when attempting to put a > function call inside a prop. Here's a minimal app: > > > (defn subdiv-color [] > (rand-nth ["black" "green" "blue" "red"])) > > (def app-state (atom {:title "Testing Testing" > :subdivs ["subdiv1" > "subdiv2"]})) > > (defn render-subdiv [content] > (dom/div #js{:style #js{:color (subdiv-color)}} content)) > > (defn main-div [data owner] > (om/component > (dom/div nil > (dom/h1 nil (:title data)) > (apply dom/p nil > (map render-subdiv (:subdivs data)))))) > > (def r1 (om/root app-state main-div js/document.body)) > > (js/setTimeout #(swap! app-state assoc > :title "1 2 3...") > 1000) > > > On the first render, everything is hunky-dory. However, when the timeout > function triggers swapping the state, the second render blows up with: > > Error while invoking `findComponentRoot` with the following ancestor node: > <body>…</body> > react.js:8813 > > Uncaught Error: Invariant Violation: findComponentRoot(..., > .r[hn4d].[1].[0]): Unable to find element. This probably means the DOM was > unexpectedly mutated (e.g. by the browser). > react.js:13161 > > Am I doing anything obviously wrong? If I replace the call to subdiv-color > to "black" everything works great. However, I'd really like to be able to > modify the props based on some logic. > > Sam > > --- > http://sam.aaron.name > > -- > Note that posts from new members are moderated - please be patient with > your first post. > --- > You received this message because you are subscribed to the Google Groups > "ClojureScript" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/clojurescript. > -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/clojurescript.
