如何防止在 ios 上冻结 react-native 应用程序?

How to keep alert from freezing react-native app on ios?

我在 IOS 上的所有 react-native 应用程序最近都停止了警报。除了更新依赖项之外,我没有做任何更改。他们在 android 上仍然可以正常工作。具体来说,警报弹出,但随后警报框上分隔按钮的栏随机闪烁,一切都冻结了。大约在同一时间,我还必须针对 Picker 在 android 上的行为方式更新我所有的本机反应应用程序的代码。也许这是巧合,或者可能是由同一个更新引起的?我同时更新了我的所有依赖项,所以如果那是问题,我不确定是哪一个。

发生这种情况:

这只是我在测试页面上使用的官方 react-native 文档的复制和粘贴:

// Works on both iOS and Android
Alert.alert(
  'Alert Title',
  'My Alert Msg',
  [
    {text: 'Ask me later', onPress: () => console.log('Ask me later pressed')},
    {
      text: 'Cancel',
      onPress: () => console.log('Cancel Pressed'),
      style: 'cancel',
    },
    {text: 'OK', onPress: () => console.log('OK Pressed')},
  ],
  {cancelable: false},

);

App 1 上的依赖项:

  "dependencies": {
    "@react-native-community/cameraroll": "^1.0.3",
    "@react-native-community/netinfo": "^2.0.4",
    "react": "16.8.3",
    "react-native": "0.59.5",
    "react-native-elements": "^1.1.0",
    "react-native-gesture-handler": "^1.1.0",
    "react-native-print": "^0.5.1",
    "react-native-vector-icons": "^6.4.2",
    "react-navigation": "^3.8.1"
  },
  "devDependencies": {
    "@babel/core": "^7.4.3",
    "@babel/runtime": "^7.4.3",
    "babel-jest": "^24.7.1",
    "jest": "^24.7.1",
    "metro-react-native-babel-preset": "^0.53.1",
    "react-test-renderer": "16.8.3"
  },

App 2 的依赖项:

  "dependencies": {
    "@react-native-community/cameraroll": "^1.0.5",
    "@react-native-community/netinfo": "^2.0.10",
    "react": "16.8.3",
    "react-native": "0.59.8",
    "react-native-elements": "^1.1.0",
    "react-native-gesture-handler": "^1.2.1",
    "react-native-vector-icons": "^6.4.2",
    "react-navigation": "^3.10.1"
  },
  "devDependencies": {
    "@babel/core": "^7.4.4",
    "@babel/runtime": "^7.4.4",
    "babel-jest": "^24.8.0",
    "jest": "^24.8.0",
    "metro-react-native-babel-preset": "^0.54.1",
    "react-test-renderer": "16.8.3"
  },

发生这种情况时我没有收到任何错误消息,控制台上也没有出现任何异常。此外,按钮没有响应,因此在上面的示例中单击它们不会向控制台记录任何内容。

有其他人 运行 参与其中吗?您能找到原因吗?谢谢!

毕竟,我只是不小心按下了模拟器中慢速动画的热键。显然,如果您 select 它,此更改适用于 XCode 中的所有模拟器,因此切换模拟器不起作用,因为它们都是 XCode 的一部分。有关详细信息,请参阅这些答案: