Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[bug]: useTransition When uninstalling, double-clicking causes DOM destroy #2258

Open
1 of 5 tasks
coderlzw-cn opened this issue Feb 28, 2024 · 1 comment
Open
1 of 5 tasks
Labels
template: bug This issue might be a bug

Comments

@coderlzw-cn
Copy link

Which react-spring target are you using?

  • @react-spring/web
  • @react-spring/three
  • @react-spring/native
  • @react-spring/konva
  • @react-spring/zdog

What version of react-spring are you using?

9.7.3

What's Wrong?

When exitBeforeEnter is set to true, double-click the button and instantly destroy the dom when it is hidden from reality

https://stackblitz.com/edit/stackblitz-starters-hh9ppv?file=src%2FApp.tsx

Kapture 2024-02-28 at 18 22 35

To Reproduce

When exitBeforeEnter is set to true, double-click the button and instantly destroy the dom when it is hidden from reality

Expected Behaviour

Is this a bug?

Link to repo

https://stackblitz.com/edit/stackblitz-starters-hh9ppv?file=src%2FApp.tsx

@coderlzw-cn coderlzw-cn added the template: bug This issue might be a bug label Feb 28, 2024
@branlok
Copy link

branlok commented Sep 11, 2024

I had the same issue, So I added another state to check whether it is still animating or not. The bug occurs when you try to change the props while it is still animating.

    let [open, setOpen] = useState(false);
    let [animating, setAnimating] = useState(false);
    const transitions = useTransition(open, {
        from: { opacity: !open ? 1 : 0 },
        enter: { opacity: 1 },
        leave: { opacity: open ? 1 : 0 },
        config: { duration: 120 },
        exitBeforeEnter: true,
        onChange: () => { setAnimating(true) },
        onRest: () => { setAnimating(false) },

    })

Even though this is a fix, for me I realize i didn't need exitbeforeenter at all.

someone else had the same issue on #1064 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
template: bug This issue might be a bug
Projects
None yet
Development

No branches or pull requests

2 participants