我正在本地开发一个 React module。为此,我正在使用npm link
. module已成功导入,但module内部的挂钩失败。它抛出以下错误:
无效的钩子调用。钩子只能在函数组件的主体内部调用。这可能是由于以下原因之一而发生的: 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
这个问题充满了建议,但它们令人困惑。我该如何解决?
注意:我没有违反钩子规则,错误仅在从应用程序导入module时出现。