You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让react-spring触发另一个弹簧?代码为何未按预期运行?

问题原因与解决方案

你的问题出在第二个弹簧默认会自动启动动画,即便后续调用pinkSpringAPI.stop(),也可能因执行时机晚于动画启动时机,导致两个弹簧同时运行。另外,useSpring的命令式API需要配合正确的初始配置来控制动画启动时机。

修正后的代码

const [blueSpring, blueSpringAPI] = useSpring(
  () => ({
    from: { x: 0 },
    to: { x: 100 },
    config: { duration: 3000 },
    onRest: () => {
      pinkSpringAPI.start();
    },
  }),
  []
);

const [pinkSpring, pinkSpringAPI] = useSpring(
  () => ({
    from: { y: 100 },
    to: { y: 200 },
    config: { duration: 3000 },
    pause: true, // 初始暂停,阻止自动启动动画
  }),
  []
);

关键说明

  • 在第二个弹簧的配置中添加pause: true,让它初始化时就处于暂停状态,不会自动播放动画。
  • 无需再调用pinkSpringAPI.stop(),pause: true已从根源阻止了自动启动。
  • 第一个弹簧的onRest回调会在自身动画结束时触发pinkSpringAPI.start(),实现顺序播放的效果。

内容的提问来源于stack exchange,提问作者Aaron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:15:59