我正在使用帧动态动画的自定义表行,每当他们被挂载。但它不是动画。当我检查网页,他们指定的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>
));
1条答案
按热度按时间8fsztsew1#
如果
AnimatePresence
也是有条件渲染的,它似乎可能无法工作,也许可以尝试:如果这不能解决问题,也可能是
motion.Tr
没有为opacity
设置转换。也许可以尝试将属性(如transition={{ opacity: { duration: 0.2 } }}
)添加到motion
组件。简化演示:stackblitz(这是使用简单的
tr
,而不是自定义的Tr
)示例:
最后,如果仍然没有动画,也许可以检查自定义
Tr
,看看它是否有一些特定的样式,可能会阻止动画发生。