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 (http://escherize.com/cljsfiddle/#gist=3227ad8ecc9adabd02436165b1286def) Walton September 16, 2016 10:29 AM, pleasesendmeas...@gmail.com (mailto:pleasesendmeas...@gmail.com) 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-project+unsubscr...@googlegroups.com (mailto:reagent-project+unsubscr...@googlegroups.com). To post to this group, send email to reagent-project@googlegroups.com (mailto:reagent-project@googlegroups.com). Visit this group at https://groups.google.com/group/reagent-project (https://groups.google.com/group/reagent-project). For more options, visit https://groups.google.com/d/optout (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.