posh icon indicating copy to clipboard operation
posh copied to clipboard

Entity included in a pull result by virtue of isComponent not reacting to change

Open charles-dyfis-net opened this issue 8 years ago • 1 comments

Given the following setup:

(require '[datascript.core :as d])

(def test-schema
{:db/ident {:db/unique :db.unique/identity},
  :one/name {:db/cardinality :db.cardinality/one},
  :one/parts
  {:db/valueType :db.type/ref,
   :db/cardinality :db.cardinality/many,
   :db/isComponent true},
  :two/name {:db/cardinality :db.cardinality/one}})

(def conn (d/create-conn test-schema))

(d/transact! conn [
  {:db/id -1, :one/name "Hello", :one/parts -2},
  {:db/id -2, :two/name "World"}
])

...and the following ultra-minimal view:

(require '[posh.reagent :as p])
(require '[reagent.core :as r])
(require '[goog.dom :as gdom])
(p/posh! conn)
(defn app [conn]
  (let [state @(p/pull conn '[*] 1)]
     [:div (pr-str state)]))
(r/render-component [app conn] (gdom/getElement "app"))

...the view then contains both elements:

{:db/id 1, :one/name "Hello", :one/parts [{:db/id 2, :two/name "World"}]}

...and is correctly rerendered when the following transaction occurs:

(d/transact! conn [{:db/id 1, :one/name "Goodbye"}])

...but not this one:

(d/transact! conn [{:db/id 2, :two/name "Y'all"}])

charles-dyfis-net avatar Jan 24 '17 00:01 charles-dyfis-net

I'm having this problem as well. I pull a deeply nested structure, but updating something down the tree, doesn't kick off a reaction.

eoliphan avatar Nov 30 '17 08:11 eoliphan