修复 nextjs 中的 "call stack full" 错误
Fixing a "call stack full" error in nextjs
我正在尝试在 nextjs 中编写代码,使我的广告牌不断滚动以显示一些信息。 Nextjs 调试器向我显示 'call stack full' 错误。我该如何解决这个问题?
const billboardContainer = useRef();
useEffect(()=>{
function billboardContainerScroll(n=0){
billboardContainer.current.scrollTo({top:0,left:(n*window.innerWidth),behaviour:'smooth'});
n++;
if(n<7 & n>=0) {
setTimeout(billboardContainerScroll(n), 2000);
} else {
n=0;
setTimeout(billboardContainerScroll(n), 2000);
}
}
billboardContainerScroll();
});
问题是你在没有退出条件的情况下递归调用你的函数,这在理论上会导致无限调用。但是调用堆栈上只能有这么多函数。
此外,您的 if 语句中存在语法错误。您在 AND 运算符中缺少 &
。
我正在尝试在 nextjs 中编写代码,使我的广告牌不断滚动以显示一些信息。 Nextjs 调试器向我显示 'call stack full' 错误。我该如何解决这个问题?
const billboardContainer = useRef();
useEffect(()=>{
function billboardContainerScroll(n=0){
billboardContainer.current.scrollTo({top:0,left:(n*window.innerWidth),behaviour:'smooth'});
n++;
if(n<7 & n>=0) {
setTimeout(billboardContainerScroll(n), 2000);
} else {
n=0;
setTimeout(billboardContainerScroll(n), 2000);
}
}
billboardContainerScroll();
});
问题是你在没有退出条件的情况下递归调用你的函数,这在理论上会导致无限调用。但是调用堆栈上只能有这么多函数。
此外,您的 if 语句中存在语法错误。您在 AND 运算符中缺少 &
。