Astro项目集成Framer Motion问题:React组件已渲染但动画失效
解决Framer Motion在Astro React组件中动画不生效的问题
你的代码本身没有问题,动画不生效的核心原因是Astro默认会静态渲染React组件,不加载客户端JavaScript,而Framer Motion的动画逻辑需要在客户端运行才能触发。
解决步骤:
在Astro页面中引用
Card1组件时,添加客户端 hydration 指令,比如client:load(页面加载时立即加载组件的客户端JS):--- import Card1 from '../components/Card1'; --- <Card1 client:load />也可以根据场景选择其他指令:
client:visible:组件进入视口时加载客户端JS,适合首屏外的组件client:idle:浏览器空闲时加载,不影响首屏性能
确保依赖已正确安装(若未安装):
npm install framer-motion @astrojs/react
添加完 hydration 指令后,Framer Motion的animate属性就能正常触发动画了。
内容的提问来源于stack exchange,提问作者Inferno
相关产品推荐
相关产品推荐

