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.