Thanks, Walton! Really neat solution. пʼятниця, 16 вересня 2016 р. 20:06:51 UTC+3 користувач Walton Hoops написав: > > Personally, I'd just keep the original around and compare it to the > current state. I've written up a simple example here: > > http://escherize.com/cljsfiddle/#gist=3227ad8ecc9adabd02436165b1286def > > Walton > > September 16, 2016 10:29 AM, pleasese...@gmail.com <javascript:> wrote: > > Hello! > Possibly a newbie question here. > Suppose, I have > (def state (reagent/atom {:a 1 :b 2 :c 3}) > > An app logic states that a component should become (and remain) visible > only if :b or :c have changed. Initial state of the component is hidden. > Is there a pattern for dealing with that in bare reagent? (note that I > don't use re-frame) > My first stab was to introduce a ratom flag and update it whenever keys > are changed > (def changed? (reagent/atom false)) > (defn toggle-changed [] (reset! changed? true)) > > > (def b-stream (reaction (:b @state)) > (def c-stream (reaction (:c @state)) > > > (add-watch b-stream toggle-changed) > (add-watch c-stream toggle-changed) > but this doesn't work with reactions. If I pass `state` to `add-watch`, > then it would work, but I should track changes of keys and values by hand. > Even if it would work, it feels very clunky and in un-clojure way. The > problem is that every `reaction` or `reagent/track` example uses derefed > value in a component, while in my case I need only changed event. > -- > You received this message because you are subscribed to the Google Groups > "Reagent-Project" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to reagent-proje...@googlegroups.com <javascript:>. > To post to this group, send email to reagent...@googlegroups.com > <javascript:>. > Visit this group at https://groups.google.com/group/reagent-project. > For more options, visit https://groups.google.com/d/optout. > >
-- You received this message because you are subscribed to the Google Groups "Reagent-Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to reagent-project+unsubscr...@googlegroups.com. To post to this group, send email to reagent-project@googlegroups.com. Visit this group at https://groups.google.com/group/reagent-project. For more options, visit https://groups.google.com/d/optout.