【问题标题】:Using react 0.59 but hooks aren't working使用 react 0.59 但钩子不起作用
【发布时间】:2020-03-29 14:30:46
【问题描述】:

在我的应用程序中,我使用的是 react 版本 16.12.0(最新的稳定版本)。 react-native 在 0.59.10 中。

但是当我尝试使用 react 钩子(如 useEffect、useState 等)时,我总是收到一条错误消息,指出 useState 未定义,所以我不能使用它。

我尝试控制台记录 useState 并得到未定义。什么是没有意义的,因为 react 版本里面已经有钩子了。

当我运行react-native info 时,我明白了:

  React Native Environment Info:
    System:
      OS: macOS 10.14.6
      CPU: (16) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
      Memory: 79.72 MB / 16.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 8.11.4 - ~/.nvm/versions/node/v8.11.4/bin/node
      Yarn: 1.17.3 - /usr/local/bin/yarn
      npm: 5.6.0 - ~/.nvm/versions/node/v8.11.4/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
    IDEs:
      Android Studio: 3.5 AI-191.8026.42.35.5977832
      Xcode: 11.2.1/11B500 - /usr/bin/xcodebuild
    npmPackages:
      react: ^16.12.0 => 16.12.0
      react-native: ^0.59.5 => 0.59.10

【问题讨论】:

  • I am getting an error. 什么错误?请将错误添加到您的答案中
  • 在那里更新,基本上它说 useEffect 是未定义的。不知道为什么。
  • 能不能更新这里的代码段...

标签: reactjs react-native react-hooks


【解决方案1】:

发生这种情况的原因是因为您使用了不匹配的 react 和 react native 版本。

如果您查看 changelog,它会说 react 版本位于 16.8.3,因此您应该更改为该版本,而不是使用最新的 react 版本。

或者只是将 react native 升级到最新版本以匹配您的 react 版本。

你也可以看到 react native 的 latest version 没有使用最新版本的 react。

【讨论】:

  • 此时更新 react-native 不是一个选项,我花了几天时间才从我得到的版本更新。但我打算尽快做,有时间的时候做。
  • 有没有办法轻松找到这个版本匹配?我现在遇到了与 react-redux 挂钩完全相同的问题,但我不知道如何以简单的方式查看与之匹配的版本。
猜你喜欢
  • 2021-11-13
  • 2020-03-11
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多