Subscriptions tracking in Re-frame

35 views
Skip to first unread message

Deuseks

unread,
Aug 12, 2019, 2:12:38 PM8/12/19
to ClojureScript

Hi
I am using re-frame with expo/react native and my components are deeply nested .I create a pass into this nested structure a new atom I construct FROM the atom of a subscription. I pass that in since reactions cannot be edited and I want this structure to be edited. However, the nested structure contains a component that displays a modal. Whenever I open the modal and close the modal control, it forces a re-fetch of the subscription data.


The questions:

  1. Why would the subscription be called again if I did not pass into the nested structure the original reaction ?

  2. Should I worry about this retrigger even if the data has not changed ? I see it pulling the same stuff but maybe it is just passing back results that are cached ? Are they cached ?

  3. Is there a way in re-frame to definitively identify which deref of the reaction/atom causes the subscription to be re-run ?

thanks for any help on this.

basket.

unread,
Aug 12, 2019, 5:46:16 PM8/12/19
to clojur...@googlegroups.com
Hi there, I am not sure I understand your scenario, but have you tried https://github.com/Day8/re-frame-10x ?


--
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 clojurescrip...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/clojurescript/5c3a1a6b-3cb6-4a0c-a0a8-4712d4ed60a6%40googlegroups.com.

Deuseks

unread,
Aug 12, 2019, 6:50:07 PM8/12/19
to ClojureScript
I have seen re-frame-10x indeed..and it is a fantastic tool. And maybe that is where the answer lies as @danielcompton said on another issue. 
However, I guess what I am trying to debug is how to tell definitively, which specific de-ref of my reaction triggered a particular subscription to be rerun. 

If this information is not currently something immediately available, I did have other questions such as:

   - Does re-frame cache the results of a subscription run ? if so, where is the documentation or even informal information about that ? 
   - can I identify which specific deref causes a rerun ?

While I can see the effects of running subscriptions and events in 10x, I am trying to debug the specific areas in code that triggered their running

DOes this help ? 



On Monday, August 12, 2019 at 5:46:16 PM UTC-4, basket. wrote:
Hi there, I am not sure I understand your scenario, but have you tried https://github.com/Day8/re-frame-10x ?


On Mon, Aug 12, 2019 at 3:12 PM Deuseks <jny...@gmail.com> wrote:

Hi
I am using re-frame with expo/react native and my components are deeply nested .I create a pass into this nested structure a new atom I construct FROM the atom of a subscription. I pass that in since reactions cannot be edited and I want this structure to be edited. However, the nested structure contains a component that displays a modal. Whenever I open the modal and close the modal control, it forces a re-fetch of the subscription data.


The questions:

  1. Why would the subscription be called again if I did not pass into the nested structure the original reaction ?

  2. Should I worry about this retrigger even if the data has not changed ? I see it pulling the same stuff but maybe it is just passing back results that are cached ? Are they cached ?

  3. Is there a way in re-frame to definitively identify which deref of the reaction/atom causes the subscription to be re-run ?

thanks for any help on this.

--
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 clojur...@googlegroups.com.

basket.

unread,
Aug 12, 2019, 10:04:20 PM8/12/19
to clojur...@googlegroups.com
What is the problem with the subscription being re-run? Does it have side effects? The part that confuses me is the new atom you are constructing from the subscription, why not use a level 3 subscription? (https://github.com/Day8/re-frame-10x/blob/master/docs/HyperlinkedInformation/UnchangedLayer2.md). The traces section might be helpful, here is a screenshot of the traces from an application I am working on:
image.png
To unsubscribe from this group and stop receiving emails from it, send an email to clojurescrip...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/clojurescript/67dcb6e5-dce0-4a67-92ec-d167f10d781e%40googlegroups.com.

Deuseks

unread,
Aug 13, 2019, 9:17:57 AM8/13/19
to ClojureScript
I think you may have hit on what I need to run - the level 3 subscriptions. I am reading from a database (datascript in this case) on the device and I want to minimize the number of queries I am making because I expect the database to grow in size. I have no problem with it being re-run if it is data residing in app-db, but it is this db access that I want to keep to the minimum.

Thank you for this link - I think I will REREAD my re-frame subscriptions literature and understand that a little better... 

Cheers @basket!!!
Reply all
Reply to author
Forward
0 new messages