【问题标题】:Fixing a "call stack full" error in nextjs修复 nextjs 中的“调用堆栈已满”错误
【发布时间】:2020-08-30 19:58:46
【问题描述】:

我正在尝试在 nextjs 中编写代码,以使我的广告牌不断滚动以显示一些信息。 Nextjs 调试器向我显示“调用堆栈已满”的错误。我该如何解决这个问题?

    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();
    });

【问题讨论】:

  • setTimeout(billboardContainerScroll(n), 2000); 更改为setTimeout(billboardContainerScroll, 2000, n);

标签: javascript reactjs settimeout next.js


【解决方案1】:

问题是你在没有退出条件的情况下递归调用你的函数,理论上这会导致无限调用。但是调用堆栈上只能有这么多函数。

顺便说一句,您的 if 语句中有语法错误。您在 AND 运算符中缺少 &amp;

【讨论】:

  • 这不是语法错误,尽管它是一个错误。单个 & 是二元和运算符。 OP 需要(正如您所指出的)逻辑和运算符。如果您真正指出为什么会发生无限递归以及如何解决它,这个答案会更好。
猜你喜欢
  • 2012-06-20
  • 2019-09-05
  • 2013-02-27
  • 1970-01-01
  • 2019-09-09
  • 2021-06-11
  • 2019-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多