React Native本机的多个版本(使用钩子时)

时间:2020-06-12 17:07:09

标签: react-native react-hooks

我经历了臭名昭著的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'),
          },
     ],
]

1 个答案:

答案 0 :(得分:2)

很长一段时间想通了。问题是将react-dom库列为依赖项。我读过某个地方可以做到这一点来支持笑话测试,但我认为建议已过时。

尽管如此,该错误还是明显的红鲱鱼,所以希望这可以在将来对某人有所帮助