如上所述这里,在使用钩子时react库中,你经常会遇到一个react错误,说hooks can only be called inside the body of a function component
此错误的最可能的原因是你的库链接到自己的react包,你主要的应用程序也,所以你最终使用2个不同的副本react包。
此错误的一种典型解决方案是确保您的主应用程序和您的库使用完全相同的react包。
我使用的解决方案是:
- 光盘到
myMainApp/node_modules/react
yarn link
- 光盘到
myLib
yarn link react
此解决方案有效。我的主应用程序和我的库现在使用相同的 React 包。
但是如果我有多个主要应用程序怎么办?假设我有这个项目结构:
mainApp1 使用 lib1-1 和 lib1-2
mainApp2 使用 lib2-1 和 lib2-2
两个主要应用程序彼此独立。所以lib1-1和lib1-2应该链接到mainApp1的react包,lib2-1和lib2-2都应该链接到mainApp2的react包
我怎么做?当我尝试运行yarn link
时mainApp2/node_modules/react
,yarn 告诉我已经有一个 react 链接。
不幸的是,我不能使用yarn link as react2
或类似的东西。
关于如何克服这个问题的任何想法?
注意:这个问题可以通过构建你的库(react 是一个 devDependency)来解决,在每次调整后将你的更改提交到 git,然后在你的主应用程序中升级库。但是当然,这不是解决方案,因为在开发过程中,您希望链接到您的库,而不是从 repo 的重新导入它们