React Hooks 错误:只能在函数组件体内调用 Hooks

2024-02-16

我在使用时收到此错误useState钩。我有它的基本形式,看看反应文档 https://reactjs.org/docs/hooks-reference.html#usestate供参考,但我仍然收到此错误。我已经准备好迎接掌脸时刻了……

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

更新时间:2018 年 12 月

新版本react-hot-loader现在已经出来了,link https://github.com/gaearon/react-hot-loader/issues/1088#issuecomment-446938770。 Hooks 现在可以开箱即用。感谢作者 theKashey。

查看此样板https://github.com/ReeganExE/react-hooks-boilerplate https://github.com/ReeganExE/react-hooks-boilerplate

  • 反应钩子
  • 反应热加载器
  • Webpack、Babel、ESLint Airbnb

上一个答案:

首先,确保你安装了react@next and react-dom@next.

然后检查您是否正在使用react-hot-loader or not.

就我而言,禁用热加载器和 HMR 可以让它工作。

See https://github.com/gaearon/react-hot-loader/issues/1088 https://github.com/gaearon/react-hot-loader/issues/1088#issuecomment-433537974.

Quoted:

是的。 RHL 100% 不兼容 hooks。只有几个 其背后的原因:

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

“热替换渲染”。 RHL 正在尝试做 React 的工作,并进行渲染 旧的和新的应用程序,将它们合并。所以,显然,这已经被打破了 现在。

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

有一个更合适的修复方法,可以工作 -cold API https://github.com/gaearon/react-hot-loader#disabling-a-type-change-%EF%B8%8F

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

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

cold(MyComponent);

搜索"useState/useEffect"内部组件源代码,并“冷”它。

Updated:

As per updated https://github.com/gaearon/react-hot-loader/issues/1088#issuecomment-441191107来自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 的更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Hooks 错误:只能在函数组件体内调用 Hooks 的相关文章

随机推荐

  • 在子窗口上绑定 jQuery 事件

    我有一个包含以下 JavaScript 的页面 var w window open somePage html width 500 height 500 w bind someEvent function alert I see the e
  • MinGW:使用 __declspec(dllexport) 还是 __attribute__((visibility("default")))?

    MinGW支持吗 declspec dllexport declspec dllimport 即使是这样 我应该使用 attribute visibility default 基本上我应该根据平台或编译器来决定使用什么 应该是这样吗 ifd
  • 未找到证书链

    我正在签署 jar 文件 由 VeriSign 提供的证书 它提供2个证书 aplha primary cer and aplha secoandary cer 我使用以下命令生成密钥库文件 keytool importcert v ali
  • 在我的应用程序中禁用多指触摸[重复]

    这个问题在这里已经有答案了 我的应用程序使用一个 Activity 来托管多个片段 每次在手机屏幕上显示一个片段 每个片段的视图由多个图像图标组成 目前 用户可以按两个图标同时地用两根手指 每根手指按一个图标 我想禁用此多点触控功能在我的应
  • 如何将一个组件服务响应传递给角度2中的其他组件

    我是角度 4 的新手 在一个组件中从服务器获取响应 并且我希望在其他组件中获取此响应对象如何访问 应用程序组件 ts export class AppComponent selected skipCount number 0 errorMe
  • 如何在3.0模拟器上正确运行应用程序?

    我从 SDK 3 1 和 OpenGL ES 模板创建了一个新项目 如您所知 这个新模板具有 ES 1 1 和 ES 2 0 实现 我想先处理 ES 1 1 部分 所以我将项目设置中的 Base SDK 更改为 Simulator 3 0
  • 创建一个在 R 中重复自身的向量

    我想创建一个重复自身的向量 例如 1 3 直至 12 行 1 2 3 1 2 3 1 2 3 1 2 3 我怎样才能在 R 中做到这一点 感谢您的帮助 See rep 你想要的很简单 gt rep 1 3 times 4 1 1 2 3 1
  • 多对多索引创建约定

    我的问题与这个帖子 https stackoverflow com questions 48645872 prevent index created by convention on many to many table 但我不想阻止 而是
  • HTML5 Canvas 改变所有线条的颜色[重复]

    这个问题在这里已经有答案了 我用 HTML5 画布制作了一个简单的绘图应用程序 您单击两个不同的位置以从一个点到另一个点绘制一条线 我还有两个文本输入框 您可以在其中更改线条粗细和颜色 问题是 当我改变线条的颜色时 它会改变all之前画的线
  • 为 SQL Server 表自动生成 INSERT 语句的最佳方法是什么?

    我们正在编写一个新的应用程序 在测试时 我们将需要一堆虚拟数据 我通过使用 MS Access 将 excel 文件转储到相关表中来添加该数据 我们经常需要 刷新 相关表 这意味着将它们全部删除 重新创建它们 然后运行保存的 MS Acce
  • 可以在 Scala 中隐藏方法吗?

    昨晚 在某个不愉快的时刻 我们庆祝了第五次因以下行为而追踪到错误的实例 String split 例如在 output split n map processRow 问题是如果output是空的 split会给你一行空字符串 process
  • 带有 base64 字符串的 HTML 图像标签(数据 URI)

    我大约每 50 200 毫秒从一系列 httprequests 获取 jpeg 图像的二进制数据 我将此数据转换为 base64 字符串 并使用 javascript 将字符串插入到 img 标记中 var img document get
  • HTML5可以访问手机上的NFC芯片吗

    我对 HTML5 不太熟悉 所以有人知道 HTML5 是否能够访问移动设备内置的 NFC 芯片吗 或者 有人可以建议另一种方法来使用其他方法来做到这一点吗 我的目标是制作一个跨平台 HTML5 Web 应用程序 可以在配备 NFC 的手机上
  • Julia JIT 编译、@time 和分配数量

    我刚刚开始评估 Julia 版本 0 6 0 并且测试了如何调整大小 和尺寸提示 可能会影响性能 我使用 time宏 文档说 运行一次进行 JIT 编译 但如果我们检查分配数量 运行一次似乎还不够 module Test function
  • 子集约束在 UML 类图中意味着什么

    有subset在部门类和人员类之间 但我不知道比是什么意思 家庭作业机会 查看由子集约束链接的两个关系 每个部门有多名成员 每个部门设经理一名 子集表示这两者之间的约束 如果后一个关系的元素是第一个关系的子集 那么你会如何描述其含义 EDI
  • 无法在反应挂钩中单击按钮时绑定单选按钮和复选框数据

    我有一个表单 当我提交数据时 它将发送到服务器并在表格中显示数据 在表中我有编辑按钮 当单击编辑按钮时 数据应该绑定到表单 在这里 我无法绑定输入字段 但不能绑定单选按钮和复选框 const Form gt const data setda
  • 如何在烧瓶应用程序中初始化时加载文件

    我有一个大文件 我们称之为 machine learning model hdf5 每次点击发布请求端点时 我都会将其加载到我的应用程序中 伪代码如下所示 def post self model load model machine lea
  • Cloud Explorer - 无法访问开发 Blob 容器

    我正在使用 VS2015 在本地使用 Azure 存储进行开发 我创建并访问了我的开发存储 blob 容器 效果很好 我上传了三张图像 并有代码来计算图像的大小 由于某些未知原因 我无法再在 Cloud Explorer 中展开 Blob
  • UWP:是否可以创建自己的网络文件(类似于 Onedrive)?

    我正在查看文档确定 Microsoft OneDrive 文件的可用性 https learn microsoft com en us windows uwp files quickstart determining availabilit
  • React Hooks 错误:只能在函数组件体内调用 Hooks

    我在使用时收到此错误useState钩 我有它的基本形式 看看反应文档 https reactjs org docs hooks reference html usestate供参考 但我仍然收到此错误 我已经准备好迎接掌脸时刻了 expo