Open
Description
The code below throws "No queries exist for component path (om-tutorial.core/RootView om-tutorial.core/Counter)" when clicking on the button.
To me it's quite strange that this is happening, since this is a very simple case, so maybe I'm doing something wrong, but if that's the case I couldn't figure out what.
Error occurs here.
(ns om-tutorial.core
(:require [goog.dom :as gdom]
[om.next :as om :refer-macros [defui]]
[om.dom :as dom]))
(def app-state (atom {:page :counter
:count 0 }))
(defn read [{:keys [state] :as env} key params]
(let [st @state]
(if-let [[_ value] (find st key)]
{:value value}
{:value :not-found})))
(defn mutate [{:keys [state] :as env} key params]
(if (= 'increment key)
{:value {:keys [:count]}
:action #(swap! state update-in [:count] inc)}
{:value :not-found}))
(defui Counter
static om/IQuery
(query [this]
[:count])
Object
(render [this]
(let [{:keys [count]} (om/props this)]
(dom/div nil
(dom/span nil (str "Count: " count))
(dom/button
#js {:onClick #(om/transact! this '[(increment)])}
"Click me!")))))
(def counter (om/factory Counter))
(defui RootView
static om/IQuery
(query [this]
[:count :page])
Object
(render [this]
(let [props (om/props this)]
(dom/div nil
(counter (om/props this))))))
(def reconciler
(om/reconciler
{:state app-state
:parser (om/parser {:read read :mutate mutate})}))
(om/add-root! reconciler
RootView (gdom/getElement "app"))
:class-path->query
apparently does not contain the expected path:
dev:om-tutorial.core=> @(om/get-indexer reconciler)
{:class->components
{om-tutorial.core/RootView #{#object[om-tutorial.core.RootView]},
om-tutorial.core/Counter #{#object[om-tutorial.core.Counter]}},
:data-path->components
{[]
#{#object[om-tutorial.core.RootView]
#object[om-tutorial.core.Counter]}},
:ref->components {},
:prop->classes
{:count #{om-tutorial.core/RootView},
:page #{om-tutorial.core/RootView}},
:class-path->query
{[om-tutorial.core/RootView] #{[[:count :page] nil]}}}
I tested on beta1 and the latest snapshot.
Metadata
Metadata
Assignees
Labels
No labels