react-transition-group icon indicating copy to clipboard operation
react-transition-group copied to clipboard

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

Open think-carlo opened this issue 2 years ago • 1 comments

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

think-carlo avatar Nov 01 '23 18:11 think-carlo

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.

dev-mingo avatar Mar 13 '24 14:03 dev-mingo