react-spring icon indicating copy to clipboard operation
react-spring copied to clipboard

[bug]: useChain with multiple useSpring hooks not respecting the animation order

Open vctormb opened this issue 1 year ago • 0 comments

Which react-spring target are you using?

  • [X] @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?

I'm trying to use two useSpring hooks to animate two different elements. I want to execute the spring animations in sequence using useChain. The problem is that the second animation is being executed simultaneously with the first one. It doesn't wait the first one to end.

  const blackSquareRef = useSpringRef();
  const blackSquareStyles = useSpring({
    ref: blackSquareRef,
    from: {
      transform: "scale(0.1)"
    },
    to: {
      transform: "scale(1)"
    },
    config: {
      duration: 800
    }
  });

  const squareRef = useSpringRef();
  const squareStyles = useSpring({
    squareRef,
    from: { background: "#ff6d6d", y: -40, x: 0 },
    to: [
      { x: 80, background: "#fff59a" },
      { y: 40, background: "#88DFAB" },
      { x: 0, background: "#569AFF" },
      { y: -40, background: "#ff6d6d" }
    ],
    loop: true
  });

  useChain([blackSquareRef, squareRef], [0, 0.9]);

To Reproduce

Open codesandbox and the black square together with the one in movement will start together.

Expected Behaviour

To execute the animations in sequence

Link to repo

https://codesandbox.io/s/react-spring-async-animation-bug-6g66wt?file=/App.js

vctormb avatar Sep 09 '23 21:09 vctormb