Skip to content

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

Closed as not planned

Description

@Archmonger

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

Activity

  1. Archmonger commented on Feb 2, 2025

    @Archmonger
    ContributorAuthor

    Closing since this would cause a feature parity mismatch with ReactJS

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority-2-moderateShould be resolved on a reasonable timeline.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions