react-native - React Native React 的多个版本(使用钩子(Hook)时)

标签 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 列为依赖项而不是对等依赖项,并且有几种方法可以解决此问题。但是,我不知道如何找出导致问题的包。

网上有很多与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/

相关文章:

react-native - react native : Fix TextInput at the bottom of the screen with a ScrollView

reactjs - useState hook 如何能够重新渲染其父函数?

react native useState 错误 ("is read-only")

javascript - 为什么我的 useEffect React 函数在页面加载时运行,尽管我给了它第二个值数组

React-Native:通常使用 react-native-image-crop-picker 和 Camera 使用 openCamera 时在 android 上崩溃

javascript - 无法将状态传递给另一个组件 [react-native]

animation - 使用动画将一个组件替换为另一个组件

javascript - 如何在 React Hooks 中使用 setTimeout 更新状态值?

reactjs - enzyme 和 react 路由器: How to shallow render a component with useHistory

react-native - 如何用 jest 模拟 react-native 模块(不是 3rd 方模块)