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

使用React Scroll滚动时报TypeError: setScrollNav is not a function错误求解

错误根因

  • 你对useState钩子的返回值用法有误:useState执行后会返回长度为2的数组,第一个元素为状态值,第二个元素才是状态更新函数,你当前的代码直接将整个返回数组赋值给了setScrollNav,导致该变量是数组而非函数,调用时自然抛出类型错误。
  • 对比你上方showNav的声明逻辑就可以发现差异:你给showNav写了解构赋值,但是setScrollNav的声明漏掉了解构步骤。

修正方案

将setScrollNav的声明改为标准的useState解构写法即可,同时可以优化冗余依赖:

export default function Navbar() {
    const [showNav, setShowNav] = useState(false);
    // 修正:解构拿到状态更新函数setScrollNav
    const [scrollNav, setScrollNav] = useState(false);

    useEffect(() => {
        function changeNav() {
            // 这里可以直接简写为布尔表达式,不用if/else
            setScrollNav(window.scrollY >= 100)
        }
        window.addEventListener('scroll', changeNav)
        return () => window.removeEventListener('scroll', changeNav)
    }, []) // 优化:React保证setScrollNav引用永远稳定,无需放入依赖数组
    // 原有return逻辑保持不变即可
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:39:03