Skip to content

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

Description

@charles-dyfis-net

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"}])

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions