You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Framer Animation退出动画失效求助(含AnimatePresence代码)

Framer Motion 退出动画失效排查方案

以下是针对你遇到的退出动画不生效问题的排查方向:

  • 确保AnimatePresence持续挂载
    AnimatePresence必须始终存在于DOM中,不能随modalOpen的状态变化被条件渲染。你的代码中AnimatePresence作为外层容器是正确的,但要确认它的父组件不会在弹窗关闭时触发重新渲染导致AnimatePresence被卸载。

  • 检查exit动画的transition配置
    你在exit属性内单独设置了transition,但如果全局transition或animate中的transition与exit配置冲突,可能导致动画不执行。可以尝试简化配置,比如:

    exit={{ y: "50%", opacity: 0 }}
    transition={{ duration: 0.3, ease: "easeInOut" }}
    // 或者直接在exit中明确完整配置
    exit={{ y: "50%", opacity: 0, transition: { duration: 0.5, ease: "easeInOut" } }}
    

    测试时建议缩短duration(比如0.5s),避免因时长太长误以为动画未执行。

  • 确认状态更新逻辑
    点击关闭按钮时,setModalOpen(false)必须正确触发React状态更新,确保modalOpen从true变为false,从而移除motion.div组件。可以在组件内添加console.log(modalOpen)确认状态变化是否正常。

  • 排查父元素样式干扰
    弹窗的父容器如果设置了overflow: hidden、display: none或position: static等样式,可能会截断或隐藏退出动画。检查父容器的CSS属性,确保动画执行时元素能正常展示过渡效果。

  • 验证key的稳定性
    你设置的key="boxid"是固定值,对于单个弹窗实例是合理的,但要确保当modalOpen状态切换时,该key对应的组件是被移除而非修改。如果存在多个弹窗场景,需要为每个实例分配唯一key。

内容的提问来源于stack exchange,提问作者Inzen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 23:02:32