javascript - 如何在成帧器运动中多次使用动画

标签 javascript reactjs animation next.js framer-motion

就像标题一样,我试图在单击按钮时多次为我的组件设置动画。目前,动画只运行一次,然后就不再起作用了,我怎么可能实现它

这是我正在尝试做的事情的示例:

const controls = useAnimation();

    const handleClick = (e) => {
        controls.start({
            rotate: "360deg",
        });
    };

return(
<motion.button onClick={handleClick}>Button</motion.button>
<motion.div className="someRect" animate={controls}></motion.div>
)

最佳答案

说实话,我从未使用过 useAnimation 控件,所以我不知道这里发生了什么以及如何使用您的方法来解决这个障碍,但您可能会通过类似的方法实现您所追求的目标。

  <button onClick={() => setRotate((prevState) => prevState + 360)}>
    Button
  </button>
  <motion.div
    className="someRect"
    animate={{
      rotate: rotate,
      transition: { duration: 3 }
    }}
    style={{ width: "100px", height: "100px", background: "red" }}
  >
  </motion.div>

我知道这个解决方案并不是最佳的,因为状态会随着每次点击而不断增长,可能会变得非常大,这可能会在某些时候导致问题。

查看我的解决方案 CodeSanbox

希望有人能想出一个更优雅的解决方案,我也很高兴看到。

关于javascript - 如何在成帧器运动中多次使用动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64200208/

相关文章:

javascript - 处理动态生成的 JavaScript 对象上的事件

javascript - 如何设置一个间隔并同时增加一个值?

node.js - Next Start 不起作用 - 无法找到 index.js 并抛出找不到模块错误

javascript - 带有 Spritely 的 jQuery Sprite

css - 如何循环一组动画,即每行在 css 动画中跳动一次?

javascript - 数字按正确顺序显示按钮

javascript - 如何在MySql中保存和读取特殊字符? (Mysqljs 和 Node )

node.js - 使用 azure 管道部署 create-react-app

javascript - 在 ReactJS 中将 Prop 从一个组件传递到另一个组件返回未定义

c# - 启动/退出 Android.Provider.Settings Activity 时如何处理动画?