如何禁用底部的反应原生警告消息

时间:2016-03-05 10:13:59

标签: react-native

我正在开发一个反应原生的IOS应用程序,这个应用程序有时会引发一条警告消息“setState(...)只能更新已安装或安装的组件。...”,我明白了这个消息是的,它是由AJAX长时间调用引起的。

考虑到这个警告不会对APP造成任何严重问题,我现在不想花太多时间来修复它,这个警告信息会在从开发服务器加载时出现在模拟器和手机中。我的问题是警告消息是否仍然会以产品模式提示(从预先捆绑的文件中加载)?如果它仍然显示,如何从配置中禁用此警告消息?

感谢。

6 个答案:

答案 0 :(得分:8)

更好的解决方案是在/文件中写下这个:

/qwerty
/asd-a1
/month/december
/posts/1
/users/id/1
/rand-om/text-1/word

答案 1 :(得分:2)

要仅禁用此警告消息,请在可能的文件上使用以下代码

console.ignoredYellowBox = ['Warning: setState(...)'];

答案 2 :(得分:1)

仅禁用setState消息

" setState(...)只能更新已安装或安装的组件。"从4个可能的文件中抛出:

  
      
  1. node_modules /反应/ DIST /反应与 - addons.js
  2.   
  3. node_modules /反应/ DIST / react.js
  4.   
  5. node_modules /反应/ LIB / ReactNoopUpdateQueue.js
  6.   
  7. node_modules /反应/ LIB / ReactUpdateQueue.js
  8.   

我不知道哪一个触发了您的,但您可以修改这些文件以不显示警告。如果您关注的是您的用户,也就是说在发布模式下,则dev标志为false,这意味着不会看到任何警告消息。

停用所有警告

要禁用警告,只需在AppDelegate.m中更改此内容:

jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];

jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=false"];

如果您正在使用预先捆绑的文件,则在捆绑时您必须将dev指定为false:

react-native bundle --dev false --entry-file index.ios.js --bundle-output ios/main.jsbundle --platform ios

答案 3 :(得分:1)

回答你问的问题,不,当您从预先捆绑的文件加载时(例如使用TestFlight进行测试时),警告不会显示。

答案 4 :(得分:1)

对于远程调试器

console.ignoredYellowBox = ['Remote debugger'];

并提供所有警告

console.disableYellowBox = true;

答案 5 :(得分:0)

我编辑了我的App.js文件并添加了这个:

console.ignoredYellowBox = ['Warning: Can only update a mounted', '-[EXCamera updateFocusDepth'];

您可以提供一系列您想要忽略的事物。只需提供您要忽略的前缀,不需要“*”或其他通配符。