-
Notifications
You must be signed in to change notification settings - Fork 412
Open
Description
An example of what IMO the usage should end up with:
(defn grandparent [{:keys [class]}]
[parent {:class [:parent class]}])
(defn parent [{:keys [class]}]
[:span {:class [:child class]}])
(render [grandparent {:class :grandparent}])
Currently, this results in the class being ultimately set to "child [:parent :grandparent]"
.
So the users have to use r/class-names
every single time they need to combine classes:
(defn grandparent [{:keys [class]}]
[parent {:class (r/class-names :parent class)}])
(defn parent [{:keys [class]}]
[:span {:class (r/class-names :child class)}])
(render [grandparent {:class :grandparent}])
Not too harde but harder than it can be.
Another problem with that approach is that the data is composed prematurely. When the "stringification" happens at the very edge of the rendering, the user code can still the full :class
data structure as it was created by the app, including all the collections, keywords, strings, nil
s. Seeing that definitely helps with debugging. It also enables class collection preprocessing in some child component, although I'm hesitant do deem this particular usage as viable.
Metadata
Metadata
Assignees
Labels
No labels