我已经了解了臭名昭著的 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
列为依赖项而不是对等依赖项,并且有几种方法可以解决此问题。但是,我不知道如何找出导致问题的包。
网上有很多与react相关的解决方案(比如添加webpack别名),可惜不是react-native。我曾(可能是天真地)尝试用 module-resolver
添加一个别名到 babel.config.js
,但这没有用:
plugins: [
[
'module-resolver',
{
alias: path.resolve('node_modules/react'),
},
],
]
最佳答案
想了很久才明白。问题是将 react-dom
库列为依赖项。我曾在某处读到过这样做以支持开玩笑测试,但我认为该建议已过时。
尽管这个错误是一个明显的转移注意力的错误,所以希望这可以帮助将来的人
关于react-native - React Native React 的多个版本(使用钩子(Hook)时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62349119/