reactpy icon indicating copy to clipboard operation
reactpy copied to clipboard

Create `use_effect` condition that triggers every render, but only cleans up on a true unmount.

Open Archmonger opened this issue 1 year ago • 0 comments

Current Situation

Right now use_effect(..., dependencies=None) triggers AND cleans up on every render. But there are circumstances where I need some conditions checked (such as within ReactPy Django's django_css component) on every render, and then need a specific action taken only when a true component dismount takes place.

Proposed Actions

Create a variant of use_effect(..., dependencies=None) that can only clean up on the final render.

We might want to use this as a pivot point to change the way we currently declare "manual effect conditions". The API is currently not very intuitive.

Perhaps we have some kind of object that signifies all the available manual effect conditions?

use_effect(..., dependencies=EffectType.trigger_always_clean_always)
use_effect(..., dependencies=EffectType.trigger_always_clean_once)
use_effect(..., dependencies=EffectType.trigger_once_clean_once)
use_effect(..., dependencies=[x, y])  # Manual condition definitions

Archmonger avatar Feb 19 '24 07:02 Archmonger