我在使用Framer Motions的"staggerChildren"动画过渡效果时遇到了一些问题,它可以让子组件的动画错开。
我已经为父容器和子元素设置了如下的动画属性:
const container = {
hidden: { opacity: 0 },
show: {
opacity: 1,
transition: {
staggerChildren: 0.5
}
}
};
const listItem = {
hidden: { opacity: 0 },
show: { opacity: 1 }
};
然后我获取一个项目数组并将其保存到我的用户状态中。最后,只需使用简单的映射从该数组中呈现一些数据。
Translated text:然后我获取一个项目数组并将其保存到我的用户状态中。最后,只需使用简单的映射从该数组中呈现一些数据。
export const Example = () => {
const [users, setUsers] = useState([]);
useEffect(() => {
axios.get("https://reqres.in/api/users").then(res => {
setUsers(res.data.data);
});
}, []);
return (
<motion.ul variants={container} initial="hidden" animate="show">
{users.map((item, i) => (
<motion.li key={i} variants={listItem}>
{item.first_name}
</motion.li>
))}
</motion.ul>
);
};
问题在于这些项虽然已经被呈现出来,但它们没有被错开并最终会同时淡化。我不确定为什么会这样。这是示例:https://codesandbox.io/s/wispy-shape-9bfbr?file=/src/Example.js
如果我使用存储在变量中的静态项目数组,然后只需使用相同的循环,就可以使过渡起作用。像这个工作示例一样: https://codesandbox.io/s/late-http-vz1s6?file=/src/Example.js 但我需要将此与 useEffect Hook 中提取的数组一起使用。有人知道如何吗?