2016-03-05 27 views
5

我正在开发一个反应原生IOS应用程序,并且此应用程序有时会引发警告消息“setState(...)只能更新已安装或挂载的组件。 ...“,我明白这个消息是关于什么的,这是由很长一段时间的AJAX调用引起的。如何在底部禁用反应本机警告消息

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

谢谢。

+0

在释放模式开发=假消息如下代码没有显示,所以你的应用商店的用户将看不到消息 –

回答

1

要禁用只的setState消息

的 “的setState(...)只能更新一安装或安装部件。”从4个可能的文件抛出:

  1. node_modules /反应/ DIST /反应与 - addons.js
  2. node_modules /反应/ DIST/react.js
  3. node_modules /反应/ LIB/ReactNoopUpdateQueue .js文件
  4. node_modules /反应/ lib中/ ReactUpdateQueue.js

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

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"]; 

要禁用所有警告

要禁用警告,只是改变这在你的AppDelegate.m捆绑文件,捆绑时必须将dev指定为false:

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

这将工作,但也将关闭所有其他警告,其中一些是非常有用的 –

+0

非常感谢答复,它的工作原理。 – mailme365

+0

任何人都知道Android的等价物是什么jsCodeLocation = [NSURL URLWithString:@“http:// localhost:8081/index.ios.bundle?platform = ios&dev = false”]; – Podgeypoos

0

只是为了回答您提问的问题,不,从预捆绑文件加载时(如使用TestFlight进行测试时),警告不会显示。

7

更好的解决方案是在你的index文件中这样写:

console.disableYellowBox = true; 
1

要禁用仅此警告信息使用上可能的文件

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