【发布时间】:2021-06-03 21:28:37
【问题描述】:
我正在本地开发一个 React 模块。为此,我使用npm link 链接我的模块。
模块已成功导入,但模块内部的钩子失败。它抛出以下错误:
无效的挂钩调用。 Hooks 只能在 a 的主体内部调用 功能组件。这可能发生在以下情况之一 原因:1. 你可能有不匹配的 React 版本和 渲染器(例如 React DOM) 2. 你可能违反了 Hooks 3. 你可能在同一个应用程序中拥有多个 React 副本 请参阅https://reactjs.org/link/invalid-hook-call 以获取有关如何操作的提示 调试并修复此问题。
查看React docs 的建议,我可以确认我的应用正在使用重复版本的 React,因为以下代码返回 false:
// node_modules/mymodule/src/index.js
export { default as ReactFromModule } from 'react'
// src/index.js
import React from 'react'
import { ReactFromModule } from 'mymodule'
console.log(React === ReactFromModule) //false
This issue 充满了建议,但它们令人困惑。我该如何解决?
注意:我没有破坏钩子规则,只有从应用程序导入模块时才会出现错误。
【问题讨论】:
标签: javascript reactjs npm webpack package.json