Can you provide a little more code? Specifically, the render function of
the events parent. I assume you are doing something like (om/build-all
event-component (:events factory))
Is there a unique id in each event by any chance? Presumably what is
happening is that react doesn't properly detect which event was actually
removed - only that one of them was removed (I've seen this a few times...)
so if you provide what React calls a "key" then it can use this to
disambiguate and correctly render the list. For example:
If your events look like this {:id 3 :other :data}
Then you can do something like this:
(om/build-all event-component all-events {*:key :id*})
If you don't have a field in the event that can be used as a key (a number,
string or keyword that is unique across all events), then you could try
something like this instead:
(map-indexed
(fn [idx event]
(build event-component event {*:react-key idx*}))
all-events)
https://github.com/swannodette/om/wiki/Documentation#build
On 18 October 2014 14:33, Andreas Liljeqvist <[email protected]> wrote:
> I have a vector of events in my factory-row.
>
> An event can be selected by clicking on it:
>
> (merge {:onClick #(om/set-state! owner :selected true)}
> (when selected {:style {:background
> "white"}}))
>
> If it is selected it will display a white background.
> This works fine.
>
> Problem is when I delete an item.
> 1. Select the first item on the row (turns white)
> 2. Delete the first item on the row (item disappears but the second item
> turns white)
>
> (will-mount [_]
> (let [delete (om/get-state owner :delete)]
> (go (loop []
> (let [event (<! delete)]
> (om/transact! factory :events
> (fn [xs] (vec (remove (partial = event)
> xs))))
> (recur))))))
>
>
> Why is local-state propagated to the next item in the list?
>
> Thanks
>
> --
> 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.
>
--
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.