javascript 装配或卸载组件时,框架器运动不设置动画

yqkkidmi  于 2023-01-01  发布在  Java
关注(0)|答案(1)|浏览(118)

我正在使用帧动态动画的自定义表行,每当他们被挂载。但它不是动画。当我检查网页,他们指定的AnimatePresence应该是一个直接的父运动。而且它应该有一个关键值。它仍然不工作。我不知道我错过了什么。请建议。谢谢。

return (
<>
...some code here
{isExpanded && <AnimatePresence>{renderLinkedAccounts()}</AnimatePresence>}

</>
);

const renderLinkedAccounts = () => linkdedAccounts.map((model, index) => (
    <motion.Tr
        initial={{ opacity: 0 }}
        animate={{ opacity: 1 }}
        exit={{ opacity: 0 }}
        layout
        key={index}
    >
        <Td><span /></Td>
        <Td data-tooltip={model.getEmailAddress()}>
            {model.getEmailAddress()}
        </Td>
        <Td>
            {userType === 1 ? model.getAccountId() : model.getMailboxKey()}
        </Td>
        <Td>
            {getAccountType()}
        </Td>
        <Td>
            {getAccountStatus()}
        </Td>
        <Td>{getOutINStatus("outgoing")}</Td>
        <Td>{getOutINStatus("incoming")}</Td>
    </motion.Tr>
));
8fsztsew

8fsztsew1#

如果AnimatePresence也是有条件渲染的,它似乎可能无法工作,也许可以尝试:

<AnimatePresence>{isExpanded && renderLinkedAccounts()}</AnimatePresence>

如果这不能解决问题,也可能是motion.Tr没有为opacity设置转换。也许可以尝试将属性(如transition={{ opacity: { duration: 0.2 } }})添加到motion组件。
简化演示:stackblitz(这是使用简单的tr,而不是自定义的Tr
示例:

<motion.Tr
  initial={{ opacity: 0 }}
  animate={{ opacity: 1 }}
  exit={{ opacity: 0 }}
  layout
  key={index}
  transition={{
    opacity: { duration: 0.2 },
  }}
>
...

最后,如果仍然没有动画,也许可以检查自定义Tr,看看它是否有一些特定的样式,可能会阻止动画发生。

相关问题