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

React 16.7.0调用useEffect、useState提示不是函数的问题求助

报错根因

React 官方是在 16.8.0 版本才正式稳定支持 Hooks 特性,useEffect、useState 都属于 Hooks API,你当前使用的 16.7.0 版本并未内置稳定版的相关 API,因此调用时会抛出类型错误。

解决步骤
  • 优先选择升级 React 相关依赖到 16.8.0 及以上版本
    执行对应包管理器的升级命令:
    npm 环境:
    npm install react@^16.8.0 react-dom@^16.8.0
    
    yarn 环境:
    yarn add react@^16.8.0 react-dom@^16.8.0
    
    升级完成后重启开发服务即可正常使用 Hooks。
  • 若受项目限制暂时无法升级 React 版本,需要将当前 Hooks 逻辑改写为类组件生命周期写法
    你当前的 useEffect 逻辑对应类组件中监听 intentButton 变量变化的更新逻辑,示例如下:
    class YourComponent extends React.Component {
      componentDidMount() {
        console.log("This is cool")
      }
      componentDidUpdate(prevProps) {
        if (prevProps.intentButton !== this.props.intentButton) {
          console.log("This is cool")
        }
      }
      // 其他组件逻辑
    }
    
额外检查项

如果升级版本后仍有同类报错,可检查以下两点:

  • 确保你调用 useEffect、useState 的位置是在函数组件或者自定义 Hook 内部,不能在普通 JS 函数、类组件中调用
  • 确认你的导入语法正确,你当前的导入写法 import React, { useEffect } from 'react' 符合规范,无需调整

内容的提问来源于stack exchange,提问作者Ghost Checker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:39:01