如何使用成帧器运动对每个状态变化进行动画处理

2024-04-29

我认为渲染成帧器运动可以重做我的动画,因为初始设置为隐藏,动画设置为显示。但这种情况并非如此。

我怎样才能让它在每次状态变化时重新播放动画?

import React, { useEffect, useState } from "react";
import { motion} from "framer-motion";
import styled from "styled-components";

const Screen = () => {
  const [state, setState] = useState(1);

  useEffect(() => {
    setInterval(() => {
      setState(Math.random());
    }, 4000);
  }, []);

  return (
    <Title variants={variants} animate="show" initial="hide">
      {console.log("re-render")}
      {`screen ${state}`}
    </Title>
  );
};

const Title = styled(motion.div)`
  color: red;
`;

export const variants = {
  show: {
    opacity: 1,
    y: 0,
    transition: {
      ease: "easeOut",
      duration: 0.3
    }
  },
  hide: {
    y: -20,
    opacity: 0
  }
};

export default Screen;

如果您只想重新安装元素,请使用key支撑它,就像这样:

  return (
    <motion.div key={state} variants={variants} animate={'show'} initial="hide">
      {`screen ${state}`}
    </motion.div>
  );

代码沙盒 https://codesandbox.io/s/https-stackoverflow-com-questions-69051279-76yit(以后复制请提供Codesandbox)

它看起来很奇怪,但如果这是你想要的效果,它就可以工作。

为了更流畅的动画,我会使用动画控件或AnimatePresence大概。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用成帧器运动对每个状态变化进行动画处理 的相关文章

随机推荐