首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StaggerChildren未与Framer Motion一起使用

StaggerChildren未与Framer Motion一起使用
EN

Stack Overflow用户
提问于 2021-09-15 10:01:46
回答 1查看 1.1K关注 0票数 1

当我的应用程序最初加载时,所有列表项都是动画效果,而不是令人震惊的效果。当我的待办事项从状态中删除时,我也使用AnimatePresence来制作退出动画。

对于Framer Motion,我使用以下变体

代码语言:javascript
复制
const listItemContainerVariant = {
    hidden: { opacity: 0 },
    show: {
      opacity: 1,
      transition: { staggerChildren: 1 }
    }
  };
  const listItemVariant = {
    hidden: { x: -500 },
    show: { x: 0, transition: { type: "spring", stiffness: 120 } },
    exit: { scale: 1.1, x: 500, opacity: 0 },
    hover: { scale: 1.1 }
  };

我使用useState来管理我的待办事项:

代码语言:javascript
复制
const [todos, setTodos] = useState(
    localStorage.todos ? JSON.parse(localStorage.getItem("todos")) : []
);

下面是我的JSX代码

代码语言:javascript
复制
<motion.ul
          id="todo-list"
          variants={listItemContainerVariant}
          initial="hidden"
          animate="show"
        >
          <AnimatePresence>
            {todos.map((todo, index) => (
              <motion.li
                variants={listItemVariant}
                initial="hidden"
                animate="show"
                exit={"exit"}
                whileHover="hover"
                key={todo.id}
                className="list-item"
              >
                <span className="list-item-text">{todo.text}</span>
                <button onClick={() => handleEdit(todo)} className="edit-btn">
                  <span role="img" aria-label="emoji">
                    ✏️
                  </span>
                </button>
                <button
                  onClick={() => handleDelete(todo.id)}
                  className="delete-btn"
                >
                  <span role="img" aria-label="emoji">
                    ?
                  </span>
                </button>
              </motion.li>
            ))}
          </AnimatePresence>
        </motion.ul>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-15 10:33:03

我发现要让staggerChildren正常工作,我必须从listItemVariant中删除退出和悬停属性,并将其单独添加到motion.li组件中。这个小修复让它工作起来了。

代码语言:javascript
复制
const listItemVariant = {
    hidden: { x: -500 },
    show: { x: 0, transition: { type: "spring", stiffness: 120 } }
};
代码语言:javascript
复制
  <motion.li variants={listItemVariant}
                exit={{ scale: 1.1, x: 500, opacity: 0 }}
                whileHover={{
                  scale: 1.1
                }}
                key={todo.id}
                className="list-item"
              >
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69190958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档