React页面如何引入本地脚本及barba.js运行delay未定义报错解决
问题根因&修复步骤
1. 直接解决delay is not defined报错
你导入GSAP后并不会全局暴露delay方法,可二选一处理:
- 方案一:在
anim.js顶部手动封装delay工具函数
// anim.js 新增这行 const delay = ms => new Promise(resolve => setTimeout(resolve, ms))
- 方案二:直接使用GSAP自带的
delayedCall方法,替换anim.js里的leave钩子逻辑
// 把await delay(1000); done(); 替换成 await gsap.delayedCall(1, done)
另外注意你当前anim.js的transitions里重复写了两次leave钩子,删掉多余的那个,避免逻辑冲突。
2. 修复其他隐性报错
helpers.js没有导入GSAP,顶部补充引入:
import gsap from "gsap"
helpers.js里的选择器写法错误,缺少类名前缀:
把timeline.to("loadingScreen"改成timeline.to(".LoadingScreen"
把timeline.from("animate-this"改成对应要动效元素的正确选择器,比如.animate-this
3. 修正barba初始化逻辑
- 你已经在
anim.js里完成了barba的导入和初始化,index.js里不需要重复导入barba、pageTransition、contentAnimation anim.js没有默认导出,index.js里的import anim from "./utils/anim"改成import "./utils/anim"- 要确保React DOM完全挂载后再初始化barba,调整
index.js的渲染逻辑:
ReactDOM.render(<App />, root, () => { // 确保DOM加载完成后再执行barba初始化 import("./utils/anim") });
内容的提问来源于stack exchange,提问作者Freddy
相关产品推荐
相关产品推荐

