我正在开发一个反应原生IOS应用程序,并且此应用程序有时会引发警告消息“setState(...)只能更新已安装或挂载的组件。 ...“,我明白这个消息是关于什么的,这是由很长一段时间的AJAX调用引起的。如何在底部禁用反应本机警告消息
考虑到这个警告不会对APP造成任何严重问题,我不想在此刻花费很多时间修复它,这个警告信息会在从开发服务器加载的模拟器和手机上显示。我的问题是,警告消息是否仍会在产品模式下提示(从预捆绑文件加载)?如果它仍然显示,如何从配置中禁用此警告消息?
谢谢。
我正在开发一个反应原生IOS应用程序,并且此应用程序有时会引发警告消息“setState(...)只能更新已安装或挂载的组件。 ...“,我明白这个消息是关于什么的,这是由很长一段时间的AJAX调用引起的。如何在底部禁用反应本机警告消息
考虑到这个警告不会对APP造成任何严重问题,我不想在此刻花费很多时间修复它,这个警告信息会在从开发服务器加载的模拟器和手机上显示。我的问题是,警告消息是否仍会在产品模式下提示(从预捆绑文件加载)?如果它仍然显示,如何从配置中禁用此警告消息?
谢谢。
要禁用只的setState消息
的 “的setState(...)只能更新一安装或安装部件。”从4个可能的文件抛出:
- node_modules /反应/ DIST /反应与 - addons.js
- node_modules /反应/ DIST/react.js
- node_modules /反应/ LIB/ReactNoopUpdateQueue .js文件
- 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
这将工作,但也将关闭所有其他警告,其中一些是非常有用的 –
非常感谢答复,它的工作原理。 – mailme365
任何人都知道Android的等价物是什么jsCodeLocation = [NSURL URLWithString:@“http:// localhost:8081/index.ios.bundle?platform = ios&dev = false”]; – Podgeypoos
只是为了回答您提问的问题,不,从预捆绑文件加载时(如使用TestFlight进行测试时),警告不会显示。
更好的解决方案是在你的index
文件中这样写:
console.disableYellowBox = true;
要禁用仅此警告信息使用上可能的文件
console.ignoredYellowBox = ['Warning: setState(...)'];
在释放模式开发=假消息如下代码没有显示,所以你的应用商店的用户将看不到消息 –