当前位置: 首页 > 知识库问答 >
问题:

React Hooks错误:只能在函数组件的主体内部调用挂钩

养鸿运
2023-03-14

我在使用useStatehook时遇到此错误。我有它的基本形式,查看react文档作为参考,但仍然得到这个错误。我已经准备好面对掌心时刻。。。

export function Header() {
  const [count, setCount] = useState(0)
  return <span>header</span>
}

共有3个答案

殳凯捷
2023-03-14

有同样的问题。我的问题与React路由器有关。我不小心用了

<Route render={ComponentUsingHooks} />

而不是

<Route component={ComponentUsingHooks} />
南宫奇思
2023-03-14

我的问题是忘记更新react-dom模块。见问题。

聂迪
2023-03-14

新版本的react-hot-loader现已推出,链接。钩子现在正在开箱工作。感谢作者TheKashey。

看看这个样板https://github.com/ReeganExE/react-hooks-boilerplate

  • 反应钩
  • 反应热装载机
  • Webpack, Babel, ESLint Airbnb

首先,确保已安装react@next反应-dom@next

然后检查您是否正在使用react hot loader

在我的情况下,禁用热加载程序

看见https://github.com/gaearon/react-hot-loader/issues/1088.

引用:

对RHL与挂钩100%不兼容。这背后只有几个原因:

SFC正在转换为Class组件。有理由——只要证监会没有“更新”方法,就能够强制更新HMR。我正在寻找其他强制更新的方法(像这样。所以RHL正在扼杀证监会。

“hotReplacementRender”。RHL正在尝试执行React的工作,并呈现新旧应用程序,以合并它们。所以,很明显,这已经被打破了。

我将起草一份PR,以缓解这两个问题。它会起作用,但今天不行。

有一个更合适的解决方案,它可以工作-冷API

您可以对任何自定义类型禁用RHL。

import { cold } from 'react-hot-loader';

cold(MyComponent);

在组件源代码中搜索“useState/useEffect”,然后“冷”它。

根据react-hot-loader维护者的更新,您可以尝试react-hot-loader@next并将配置设置为以下内容:

import { setConfig } from 'react-hot-loader';

setConfig({
  // set this flag to support SFC if patch is not landed
  pureSFC: true
});

感谢@loganfromlogan的更新。

 类似资料:
  • 问题内容: 使用挂钩时出现此错误。我有它的基本形式,正在看react docs作为参考,但是仍然出现此错误。我已经准备好面对手掌的时刻… 问题答案: 更新时间:2018年12月 的新版本现已发布,链接。Hooks现在可以立即使用。感谢作者theKashey。 查看此样板https://github.com/ReeganExE/react-hooks- boilerplate 反应钩 反应热加载器

  • 问题内容: 我是React的新手,现在我想在表中显示一些记录,现在出现此错误。请帮帮我。 无效的挂接调用。挂钩只能在功能组件的主体内部调用。发生这种情况可能是由于以下原因之一:1.您的React和渲染器版本可能不匹配(例如React DOM)2.您可能违反了《胡克规则》 3.您可能在其中包含多个React版本相同的应用程序请参阅有关如何调试和解决此问题的提示。 问题答案: 因为你。在此处查看更多信

  • 我收到这个错误”无效的钩子呼叫。钩子只能在函数组件的主体内部调用。“当我尝试运行我的函数时。我试图运行一个脚本,生成reCaptcha令牌脚本如下: 这个组件应该生成令牌(这是我得到错误的地方) 在另一个组件中,我调用了前面的脚本组件,并传递了一个动作类型,但是我得到了提到的react钩子错误(仅显示相关代码)。 我想问题在于我调用/使用导入组件的方式,但我找不到解决方案?

  • 我想使用React在表中显示一些记录,但我得到了这个错误: 无效的挂接调用。钩子只能在函数组件的主体内部调用。这可能是以下原因之一: 您可能有不匹配的React和渲染器版本(如React DOM) 你可能违反了钩子规则 在同一个应用程序中可能有多个React副本,请参阅有关如何调试和修复此问题的提示。

  • 我在我的react项目中使用apollo graphql,我得到的错误是 无效的钩子调用。钩子只能在函数组件的主体内部调用 这是我的代码 一旦我运行了这个程序,我就得到了错误,我知道useQuery本身就是一个钩子,我不能从内部useEffect调用它,但是接下来应该怎么解决这个问题,因为我需要首先从我的redux状态中获取insuranceId并将其发送到查询。 谢谢

  • 我得到以下错误,不确定我在箭头函数内实例化 react 钩子时做错了什么: 错误:挂接调用无效。钩子只能在函数组件的主体内部调用。这可能是由于以下原因之一: 您可能有不匹配的React和渲染器版本(如React DOM)。 您可能违反了钩子的规则。 同一应用程序中可能有多个React副本。请参阅https://reactjs.org/link/invalid-hook-call有关如何调试和修复此