Skip to content

CSSTransition is showing state changing on re-renders during exit. #895

Open

Description

@think-carlo

What is the current behavior?

I have a TransitionGroup managing state for a CSSTransition. The child for the CSSTransition is a single slide, which re-renders upon dispatches to update state. When the state updates and the slide re-renders, you can see the state change happen on original node in the DOM before the exit happens, causing it to look as if the animation is lagging behind.

What is the expected behavior?

I expect that original node would maintain the original state as it exits, and then the newly cloned node would render the updated state as it enters. I've given the CSSTransition a unique value as the key prop so that React can track the mounts properly, but it's still happening.

The state for the slide is pulled from a context provider, and the slide is also a forwardRef as it's a functional component.

Could you provide a CodeSandbox demo reproducing the bug?

https://codesandbox.io/s/fervent-jones-yspc9v

Activity

  1. dev-mingo commented on Mar 13, 2024

    @dev-mingo

    I was able to bypass this by using

    1. useState for visibility to keep track of the visibility state
    2. useRef to keep track of the original component data
    3. useEffect to adjust the visibility and data management

    on the same issue. But, a from the maintainers would be much better, instead of using a hacky workaround such as mine.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions