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

React函数组件Hook调用错误求助:Invalid hook call问题排查

解决React Invalid Hook Call错误(Hooks can only be called inside of the body of a function component)

问题定位

错误提示指向<WithStyles(ForwardRef(Paper))>,结合你的代码来看,核心问题大概率出在useStyles的实现上。你当前导入的useStyles可能不是用Material-UI的makeStyles创建的Hook,而是误用了旧版的withStyles高阶组件。

解决方案

1. 修正styles.js的写法

确保你的styles.js使用makeStyles生成样式Hook,而非withStyles:

// styles.js
import { makeStyles } from '@material-ui/core/styles';

const useStyles = makeStyles((theme) => ({
  paper: {
    padding: theme.spacing(2),
    // 自定义你的其他样式
  },
  form: {
    display: 'flex',
    flexWrap: 'wrap',
    gap: theme.spacing(1),
    // 自定义你的其他样式
  },
  fileInput: {
    width: '97%',
    margin: '10px 0',
  },
  buttonSubmit: {
    marginBottom: 10,
  }
}));

export default useStyles;

withStyles是用来包装组件的高阶组件,不能作为Hook直接调用,这会违反React Hook的调用规则,进而触发你遇到的错误。

2. 检查版本兼容性

确保项目中React和ReactDOM版本均在16.8.0及以上(Hooks特性从该版本开始支持),同时@material-ui/core版本与React版本匹配(v4版本要求React 16.8+)。

3. 确认组件调用方式

确保Form组件是以React组件形式渲染(如<Form />),而非当作普通函数直接调用(如Form()),后者会导致Hook调用环境失效。

额外优化提示

你代码中所有TextField的label都写为"Creator",建议对应修改为正确文本(比如title对应"Title"、message对应"Message"),避免用户混淆。

内容的提问来源于stack exchange,提问作者jason sure

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:52:58