我经历了臭名昭著的invalid hook call warning的3个主要原因,并确定我的应用程序中有多个版本的React。我已通过以下步骤对此进行了确认:
// Add this in node_modules/react-dom/index.js
window.React1 = require('react');
// Add this in your component file
require('react-dom');
window.React2 = require('react');
console.log(window.React1 === window.React2);
根据我的研究,我了解到我可能是一个依存关系,将react
列为依存关系而不是对等依存关系,并且有几种方法可以解决此问题。但是,我不知道如何找出导致问题的哪个包。
在线上有许多与反应相关的解决方案(例如添加Webpack别名),但不幸的是,这些解决方案不适用于react-native。我(可能很幼稚)尝试向module-resolver
添加一个带有babel.config.js
的别名,但这没有用:
plugins: [
[
'module-resolver',
{
alias: path.resolve('node_modules/react'),
},
],
]
答案 0 :(得分:2)
很长一段时间想通了。问题是将react-dom
库列为依赖项。我读过某个地方可以做到这一点来支持笑话测试,但我认为建议已过时。
尽管如此,该错误还是明显的红鲱鱼,所以希望这可以在将来对某人有所帮助